当前位置: 技术问答>linux和unix
请教在工控机上剪裁内核并安装的问题
来源: 互联网 发布时间:2016-10-08
本文导语: 之前做过arm平台的剪裁和驱动, 不过现在的平台是工控机(赛扬M处理器,x86平台,存储器是CompactFlash卡,不同于一般的nand flash), 和嵌入式是有一定区别, 一般情况下, 往工控机上装linux都是用外置光驱装, 安装一般的发...
之前做过arm平台的剪裁和驱动,
不过现在的平台是工控机(赛扬M处理器,x86平台,存储器是CompactFlash卡,不同于一般的nand flash), 和嵌入式是有一定区别,
一般情况下, 往工控机上装linux都是用外置光驱装, 安装一般的发行版, 但是这样安装体积比较大, 很多服务和组件也没有必要安装上去,
所以现在的想法是剪裁一个内核,并用busybox制作一个根文件系统,这两步都不难,
关键是,之前的嵌入式arm平台,内核启动前是由bootloader(uboot)引导, 但是工控机有些类似于台式机,主板上有bios,所以在CF存储卡上安装一个GRUB,用GRUB引导直至内核启动,
请问:
(1)CF卡上如何安装GRUB ? 如何把内核和根文件系统拷贝至CF卡?
(2)编译工控机((赛扬M处理器,x86平台)的linux内核, 是否是gcc编译器?
编译的过程, 修改Makefile中的ARCH := x86 并修改CROSS-COMPILE=gcc,然后make zImage, 这样做是否正确无误?
(3)在这个剪裁的linux平台上开发应用程序,因为没图形界面, 所以一般的图形化IDE是没法用的,(由于项目比较大,自己写makefile太耗时了),所以想在一般电脑上编译,(ubuntu 9.1.0 + eclipse + gcc4.1.2),然后拿到工控机上运行,这样是否可行?
不过现在的平台是工控机(赛扬M处理器,x86平台,存储器是CompactFlash卡,不同于一般的nand flash), 和嵌入式是有一定区别,
一般情况下, 往工控机上装linux都是用外置光驱装, 安装一般的发行版, 但是这样安装体积比较大, 很多服务和组件也没有必要安装上去,
所以现在的想法是剪裁一个内核,并用busybox制作一个根文件系统,这两步都不难,
关键是,之前的嵌入式arm平台,内核启动前是由bootloader(uboot)引导, 但是工控机有些类似于台式机,主板上有bios,所以在CF存储卡上安装一个GRUB,用GRUB引导直至内核启动,
请问:
(1)CF卡上如何安装GRUB ? 如何把内核和根文件系统拷贝至CF卡?
(2)编译工控机((赛扬M处理器,x86平台)的linux内核, 是否是gcc编译器?
编译的过程, 修改Makefile中的ARCH := x86 并修改CROSS-COMPILE=gcc,然后make zImage, 这样做是否正确无误?
(3)在这个剪裁的linux平台上开发应用程序,因为没图形界面, 所以一般的图形化IDE是没法用的,(由于项目比较大,自己写makefile太耗时了),所以想在一般电脑上编译,(ubuntu 9.1.0 + eclipse + gcc4.1.2),然后拿到工控机上运行,这样是否可行?
|
1、比较可靠的方法:先在开发板上接一个光驱,安装一遍Linux,这样CF卡上就写好了grub
2、直接用标准的gcc,kernel的话,直接下载下来就可以了。
3、这样做比较好。但要注意开发环境是实际运行环境的一些区别。
2、直接用标准的gcc,kernel的话,直接下载下来就可以了。
3、这样做比较好。但要注意开发环境是实际运行环境的一些区别。
|
1、第一次可以这样安装。然后写个程序把CF卡的引导区读出来,保存成一个映像文件。以后量产的时候,直接把这个映像文件写到每一块CF卡中就行了。
2、除了编译器外,还要注意函数库的问题,以及一些特定的硬件问题(例如多核的支持、超线程的支持等等)
2、除了编译器外,还要注意函数库的问题,以及一些特定的硬件问题(例如多核的支持、超线程的支持等等)
|
回答一下你的第三个问题:
几乎所有的嵌入式程序都是在PC下编译的。
所谓的交叉编译就是指这种情况。
其关键是使用正确的编译链。
只要工具链正确,你编译出来的东西就可以在目标机上运行。
几乎所有的嵌入式程序都是在PC下编译的。
所谓的交叉编译就是指这种情况。
其关键是使用正确的编译链。
只要工具链正确,你编译出来的东西就可以在目标机上运行。
|
sorry,你的情况应该不属于这种状况,你的开发平台和运行平台还是一个平台。
2楼的回答更准确。
补充一点你的运行平台似乎没有必要安装GCC之类的开发工具阿。