go语言串口通话 golang串口( 二 )


void main()
{
UART_Init();
Rx_p = 0;
Rx_p = 2;
while(1){
if (Rx_p != 0){
TX_p = Rx_p;//字符串1 2 3
Tx_i = 0;//字符指针.
Rx_p = 0;//清零.
Rx_i = 0;
TI = 1;//启动发送中断.
} }
}
//---------------------------------------------------
void Uart_INT(void) interrupt 4//串口中断函数
{
uchar Tcv = 0;
if(RI){//接收?.
RI = 0;//标志位清零.
RxBuf[Rx_i] = SBUF;
if((RxBuf[Rx_i - 1] == 'g')(RxBuf[Rx_i] == 'o'))Rx_p = 1;
if((RxBuf[Rx_i - 2] == 'w')(RxBuf[Rx_i - 1] == 'h')(RxBuf[Rx_i] == 'o'))Rx_p = 2;
if((RxBuf[Rx_i - 3] == 'h')(RxBuf[Rx_i - 2] == 'o')(RxBuf[Rx_i - 1] == 'm')(RxBuf[Rx_i] == 'e'))Rx_p = 3;
P1 = Rx_p;//在P1显示收到的信息.
Rx_i++;
Rx_i %= 5;
}
else {
TI = 0;
if (TX_p == 1)Tcv = trdata1[Tx_i];//取来待发字符.
if (TX_p == 2)Tcv = trdata2[Tx_i];
if (TX_p == 3)Tcv = trdata3[Tx_i];
if (Tcv != 0){SBUF = Tcv;Tx_i++;} //不是0就发送.
}
}
//---------------------------------------------------
「干货」嵌入式Linux系统移植的四大步骤(上) 在学习系统移植go语言串口通话的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们的开发环境没有一个深刻的认识,有时候几个简单的命令就可以完成非常复杂的功能,可是我们有没有想过,为什么会有这样的效果?
如果没有去追问,只是机械地完成,并且看到实验效果,这样做其实并没有真正的掌握系统移植的本质 。
在做每一个步骤的时候 ,  首先问问自己,为什么要这样做,然后再问问自己正在做什么? 搞明白这几个问题,我觉得就差不多了,以后不管更换什么平台,什么芯片,什么开发环境,你都不会迷糊 , 很快就会上手 。对于嵌入式的学习方法,我个人方法就是:从宏观上把握(解决为什么的问题),微观上研究(解决正在做什么的问题) , 下面以自己学习的arm-cortex_a8开发板为目标 , 介绍下自己的学习方法和经验 。
嵌入式Linux系统移植主要由四大部分组成:
一、搭建交叉开发环境
二、bootloader的选择和移植
三、kernel的配置、编译、和移植
四、根文件系统的制作
第一部分:搭建交叉开发环境
先介绍第一分部的内容:搭建交叉开发环境,首先必须得思考两个问题,什么是交叉环境? 为什么需要搭建交叉环境?
先回答第一个问题,在嵌入式开发中,交叉开发是很重要的一个概念,开发的第一个环节就是搭建环境,第一步不能完成,后面的步骤从无谈起,这里所说的交叉开发环境主要指的是:在开发主机上(通常是我的pc机)开发出能够在目标机(通常是我们的开发板)上运行的程序 。嵌入式比较特殊的是不能在目标机上开发程序(狭义上来说) , 因为对于一个原始的开发板,在没有任何程序的情况下它根本都跑不起来,为了让它能够跑起来,我们还必须要借助pc机进行烧录程序等相关工作,开发板才能跑起来,这里的pc机就是我们说的开发主机,想想如果没有开发主机,我们的目标机基本上就是无法开发,这也就是电子行业的一句名言:搞电子,说白了,就是玩电脑!
然后回答第二个问题,为什么需要交叉开发环境?主要原因有以下几点:
原因1: 嵌入式系统的硬件资源有很多限制,比如cpu主频相对较低,内存容量较小等,想想让几百MHZ主频的MCU去编译一个Linux kernel会让我们等的不耐烦,相对来说,pc机的速度更快,硬件资源更加丰富 , 因此利用pc机进行开发会提高开发效率 。

推荐阅读