基于MIPS RMI AU1250的板子linux 内核和yaffs2的移植???
我现在在做一个linux移植的项目,cpu是mips的(RMIau1250),我想内核启动后就直接运行我们自己的应用程序,可是怎么样把内核的image,和根文件系统,还有...
我现在在做一个linux移植的项目,cpu是mips 的(RMI au1250),
我想内核启动后就直接运行我们自己的应用程序,可是怎么样把内核的image,和根文件系统,还有应用程序打包在一起呢?
337825770QQ请吃饭…… 展开
我想内核启动后就直接运行我们自己的应用程序,可是怎么样把内核的image,和根文件系统,还有应用程序打包在一起呢?
337825770QQ请吃饭…… 展开
展开全部
linux 内核起来后,首先会启动一个init进程(一号进程),对于嵌入式linux内核,这个init进程一般是root文件系统上的linuxrc,它大多是链接到/bin/busybox(根文件系统用的是busybox,Android 系统的根文件系统及init文件是和Android源码一起编译的),这个init进程会调用一系列启动脚本。
如果你用的rootfs是busybox,启动脚本就是/etc/init.d/rcS,修改这个脚本调用你的应用程序就行了。其它根文件系统你需要根据init.c的源码,找出init进程调用的启动脚本,将你的应用程序入口写进启动脚本中。
如果你用的rootfs是busybox,启动脚本就是/etc/init.d/rcS,修改这个脚本调用你的应用程序就行了。其它根文件系统你需要根据init.c的源码,找出init进程调用的启动脚本,将你的应用程序入口写进启动脚本中。
追问
关键是我现在内核做好了linux 2.6.29.x,yaffs2也做好了,都在同一个目录au1250里面,我怎么把yaffs和kernel编译成一个vmlinux可执行文件;我现在在我的内核里make vmlinux可以直接生成vmlinux的,我再objcopy -O srec vmlinux vmlinux.srec可以成生成后缀是‘.srec’的文件下到板子上也能跑;但是内核恐慌……说找不到文件系统!mtdblock0和mtdblock1都可以使用!
追答
一般嵌入式linux根文件系统有这几种方式:
1、独立根文件系统
根文件系统做好后,单独烧写到NAND的分区中,boot在加载内核时指定此分区(内核源码中的分区一定要与此根分区对应),一般boot引导kernel时有类似如下参数:
bootargs = console=ttyS0,57600n8 ip=off root=/dev/mtdblock2 rw
这种方式需要专门的烧写工具,或者使用nfs root引导后烧写根文件系统。
2、initrd方式
它是一个被压缩过的小型根目录,根文件系统做成initrd.img,启动时由boot把initrd文件读到内存中,然后把initrd的起始地址告诉内核,这种方式一般有如下boot参数:
bootargs=initrd=0x31000000,0x200000 root=/dev/ram0 rw init=/linuxrc console=ttyS0
3、initramfs方式
这种方式直接将根文件系统配置进内核,编译内核前需要将事先做好的根文件系统的目录指定,配置方法如下:
General setup --->
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
(/nfsroot/miniroot/) Initramfs source file(s)
(initrd方式也需要打开这个选项,但不需要指定根文件系统的目录)。
我想你应该采用第三种方式吧,这种方式应该是最方便的了,引导时也不需要指定bootargs参数,只要生成的映像文件大小在你的烧写工具支持范围内就可以了,这是目前很多系统采用的方式。
详细的方法网上很多,需要你自己去搜了,希望对你有帮助。
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103R8T6是ST旗下的一款常用的增强型系列微控制器,是一款基于ARM Cortex-M内核的微控制器。STM32F103R8T6主要面向消费类电子产品、工业控制、医疗仪器、汽车电子等领域,可用于开发各种类型的应用。STM32...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询