搭建开发环境和使用UBOOT【上】
HELPER2416开发板助学计划
我也是相关知识的初学者。但是稍微知道一些,嵌入式linux下的程序开发,大多采用交叉编译(其实现在好多的环境也都支持目标平台上的编译)。目标平台上运行时需要三大件:BootLoader、Kernel和rootfs,再把自己编译的应用程序通过种种途径拷贝到目标平台的文件系统中,就可以直接运行啦。
本篇的主要目标:构建一个自己使用的开发环境。
首先从三大件说起。
大多数文章都说,BootLoader就相当于PC中的BIOS,其实它的最主要工作是把Linux内核加载到内存中,然后把控制权交给Kernel。UBoot可能是比较流行的BootLoader了,详细的就不说了,太多相关文章啦。重点提一个情报,UBoot支持从网络加载Kernel进行启动,这样就意味着在内核开发的时候,我们不需要每次编译完内核就把它烧写到Flash中——这样既费时又费Flash。所以本次,我们的第一个目标就是从网络引导开发板。
当CPU控制权交给Kernel以后,Kernel作为系统的核心,首先建立操作系统的各种机制,然后开始初始化Kernel内置的硬件驱动,最后利用外部存储驱动来挂载外存上的文件系统fs。稍微注意一点,Kernel会内置一个小巧的文件系统,供上述处理使用,挂载外存fs以后,会进行一次简单的文件系统乾坤大挪移,之后就开始在新文件系统上运行,并执行新文件系统中的初始化程序,开始扩展整个系统的功能和应用。
Kernel可以支持从网络挂载文件系统(NFS),所以我们的第二个目标,就是从网络挂载文件系统。这样一来,我们无论做个什么应用程序或者驱动模块,都是在PC上编译,然后不需要利用繁琐的复制就可以直接出现在开发板上啦。
然后是关于硬件的连接和PC的准备。
PC上运行着虚拟机,按照君益兴手册的指导就可以轻松建立起FC12的虚拟机,PC和板子之间连接着网线(板子支持自动端口翻转,可以用网线直连)和USB转串口线,板子利用USB线通电。
由于需要使板子可以直接访问FC提供的服务,因此方便起见,FC虚拟机的虚拟网卡,设置成桥接模式,
并且在虚拟网卡的ConfigureAdapters设置中,勾选要桥接的真实外设为和板子相连的那个网络接口。
有眼尖的童鞋会看到我实际上设置了两个虚拟网卡,一个用来桥接到板子,另一个用来通过本机Nat访问网络安装程序、浏览网页什么的。如果你对虚拟机掌握到一定程度,也可以像我这样做个设置,不过对于初学者可能会混淆视听,所以在这里我就不过多解释了。
进入FC里,我们来设置开发服务器。第一件事是设置上位机PC的IP地址,斑竹给的资料里,FC是图形界面的,我们不要放弃这么好的资源,暂时就尽可能利用图形界面来进行系统的设置啦。从菜单中选择网络设置。
对于我来说有两块网卡,如果你默认没有增加虚拟网卡,应该只能看到一个。
双击要设置的网卡之后,会出现具体设置的内容。以我自己的设定为例,我设置FC的IP地址为192.168.168.168,子网掩码为默认的255.255.255.0。
然后设置NFS服务。在这里,楼主调查了一下,kernel也可以通过NFS来加载,所以我们只要利用NFS就足够了,就不需要再启用tftp了。接下来从菜单中,我们找到NFS的设置工具。
在简单的工具界面里,我们就可以增删改NFS共享的目录了。
想要添加一个目录,就单击那个大大的加号,然后依次填写这个共享目录的基本信息、一般设定和用户选项设定。
设定完毕,就可以在FC上先测试一下能否正常使用了。测试前,记得把文件系统,根据资料里的说明准备好,其实FC里已经准备了,就在/opt/target,所以我把这个目录复制为/helper2416/rootfs,然后运行测试。
对于Kernel也可以和rootfs放在一处,但是我比较强迫症,所以单独又建立一个只读的目录,用于专门存放kernel,然后把资料盘中的zImage.43复制了进去。
至此,上位机就算是准备完毕了。
论坛ID:sjtitr
提交时间:2014.07.22