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


原因2: 嵌入式系统MCU体系结构和指令集不同,因此需要安装交叉编译工具进行编译,这样编译的目标程序才能够在相应的平台上比如:ARM、MIPS、 POWEPC上正常运行 。
交叉开发环境的硬件组成主要由以下几大部分 :
1.开发主机
2.目标机(开发板)
3.二者的链接介质,常用的主要有3种方式:(1)串口线 (2)USB线 (3)网线
对应的硬件介质 , 还必须要有相应的软件“介质”支持:
1.对于串口,通常用的有串口调试助手 , putty工具等,工具很多,功能都差不多,会用一两款就可以go语言串口通话;
2.对于USB线,当然必须要有USB的驱动才可以 , 一般芯片公司会提供,比如对于三星的芯片,USB下载主要由DNW软件来完成;
3.对于网线,则必须要有网络协议支持才可以 ,  常用的服务主要两个
第一:tftp服务:
主要用于实现文件的下载,比如开发调试的过程中 , 主要用tftp把要测试的bootloader、kernel和文件系统直接下载到内存中运行,而不需要预先烧录到Flash芯片中,一方面 , 在测试的过程中,往往需要频繁的下载,如果每次把这些要测试的文件都烧录到Flash中然后再运行也可以,但是缺点是:过程比较麻烦,而且Flash的擦写次数是有限的;另外一方面:测试的目的就是把这些目标文件加载到内存中直接运行就可以了,而tftp就刚好能够实现这样的功能,因此,更没有必要把这些文件都烧录到Flash中去 。
第二:nfs服务:
主要用于实现网络文件的挂载,实际上是实现网络文件的共享,在开发的过程中,通常在系统移植的最后一步会制作文件系统 , 那么这是可以把制作好的文件系统放置在我们开发主机PC的相应位置,开发板通过nfs服务进行挂载 , 从而测试我们制作的文件系统是否正确 , 在整个过程中并不需要把文件系统烧录到Flash中去,而且挂载是自动进行挂载的,bootload启动后,kernel运行起来后会根据我们设置的启动参数进行自动挂载,因此,对于开发测试来讲,这种方式非常的方便,能够提高开发效率 。
另外,还有一个名字叫 samba 的服务也比较重要,主要用于文件的共享,这里说的共享和nfs的文件共享不是同一个概念,nfs的共享是实现网络文件的共享,而samba实现的是开发主机上 Windows主机和Linux虚拟机之间的文件共享 , 是一种跨平台的文件共享 ,方便的实现文件的传输 。
以上这几种开发的工具在嵌入式开发中是必备的工具,对于嵌入式开发的效率提高做出了伟大的贡献,因此,要对这几个工具熟练使用,这样你的开发效率会提高很多 。等测试完成以后,就会把相应的目标文件烧录到Flash中去,也就是等发布产品的时候才做的事情,因此对于开发人员来说,所有的工作永远是测试 。
通过前面的工作,我们已经准备好了交叉开发环境的硬件部分和一部分软件,最后还缺少交叉编译器,读者可能会有疑问,为什么要用交叉编译器?前面已经讲过 , 交叉开发环境必然会用到交叉编译工具 , 通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序 , 开发主机PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行 , 虽然两个平台用的都是Linux系统 。相对于交叉编译,平常做的编译叫本地编译,也就是在当前平台编译,编译得到的程序也是在本地执行 。用来编译这种跨平台程序的编译器就叫交叉编译器,相对来说 , 用来做本地编译的工具就叫本地编译器 。所以要生成在目标机上运行的程序,必须要用交叉编译工具链来完成 。

推荐阅读