arm系统启动后运行 helloworld ("hello world" 被封装为ramdisk)

原创 2015年07月07日 16:51:23
----------------------------------------
arm系统启动后运行 helloworld
----------------------------------------
编译环境:arm交叉环境:

1. 交叉编译linux 内核。 注意make 时, ARCH=arm

   交叉编译前缀为 CROSS_COMPILE=arm-none-linux-gnueabi-

   建议直接修改Makefile, 修改ARCH, CROSS_COMPILE 变量为:

  ARCH        ?= arm
CROSS_COMPILE   ?= arm-none-linux-gnueabi-


 make defconfig 或者 make versatile_defconfig

 此时make 会生成 arch/arm/boot/zImage, 但这个内核文件运行时会出问题:

:Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004


解决办法:重新配置内核支持EABI

make clean

make menuconfigKernel Features  --->
     [*] Use the ARM EABI to compile the kernel
     [*]   Allow old ABI binaries to run with this kernel (EXPERIMENTAL)

为什么出现这个问题没有深究,也许是qemu或者代码本身问题,这样解决也就可以了。



2. 编译一个arm 执行程序hello
    参考:http://blog.csdn.net/hejinjing_tom_com/article/details/46788283

3. 令内核启动完成后跳入hello

甲: 将hello打包为ramfs
$ echo hello | cpio -o --format=newc > initramfs

乙: 模拟运行
$ qemu-system-arm -M versatilepb -kernel zImage -initrd initramfs -append "root=/dev/ram rdinit=/hello"
root=/dev/ram 指明根文件系统在ram, -initrd 模拟根文件系统。 rdinit= ... 第一个运行程序


$ qemu-system-arm -M versatilepb -kernel zImage -initrd initramfs -nographic -append "root=/dev/ram rdinit=/hello console=ttyAMA0"

这里模拟了串口,控制台输出从那个挺难看的小窗口挪到了本地,字体好看多了。

-nographic      disable graphical output and redirect serial I/Os to console


Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net>
smc91x smc91x.0 eth0: SMC91C11xFD (rev 1) at c89c8000 IRQ 57
 [nowait]
smc91x smc91x.0 eth0: Ethernet addr: 52:54:00:12:34:56
mousedev: PS/2 mouse device common for all mice
TCP: cubic registered
NET: Registered protocol family 17
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
Freeing unused kernel memory: 124K (c03c2000 - c03e1000)
---------- hello qemu ------------
input: AT Raw Set 2 keyboard as /devices/fpga:06/serio0/input/input0
input: ImExPS/2 Generic Explorer Mouse as /devices/fpga:07/serio1/input/input2

(qemu)

hello qemu 出来的真不容易!
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

initramfs文件系统的介绍与制作

一、什么是initramfs文件系统     initramfs最初的想法是Linus提出的,把cache当作文件系统装载。他在一个叫ramfs的cache实现上加了一层很薄的封装,其它内核开发人员编...

ramdisk文件系统的介绍与制作

一、文件系统与根文件系统     1、文件系统         文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)分区上的文件的存储方法和数据结构,即在存储设备...

arm linux嵌入式经典回答

很多新手刚开始学习ARM的时候都会遇到下面类似的问题,由于很多基本原理都不会,所以很容易被表面问题迷惑,相信看完下述问答的新手一定会对ARM有一个非常清晰的印象。 1、请问qt-x11、qt-emb...

吐血简述在arm-linux上编译helloworld时候的抓狂经历

想在我的fl2440上运行一个helloworld,在三、五个月前,我曾经编写过一个helloworld,跑在开发板上,当时编译和运行都很顺利,所以就没有把相关的操作过程记录下来。在随后的几个月里,一...

吐血简述在arm-linux上编译helloworld时候的抓狂经历

转自:http://blog.csdn.net/samantha_sun/article/details/6428285 想在我的fl2440上运行一个helloworld,在三、五个月前,...

x86_64用户态模拟arm程序(helloworld)

用户态模拟arm 运行程序 - "hello world" 编译一个运行在arm 上的helloworld. ---------------------------------------- 甲:...

linux系统中运行hello world

1、在linux系统中,输入“ifconfig ”查看虚拟机linux系统中的ip . 2、“cd / ”进入根目录,然后“ls ” 显示根目录下的子目录,再从根目录进入arm2410cl,再进...

ubuntu/centos环境下玩android系统(四): Android模拟器中运行hello world和贪吃蛇snake!

本篇将介绍Eclipse工具,目的仅仅是了解android java应用程序的开发而已! Eclipse下载地址http://www.eclipse.org/downloads/ 本次直接在win...
  • jjavaa
  • jjavaa
  • 2011-12-24 13:06
  • 2098

android studio 1.3.2创建的Hello World工程在老版本系统的手机上运行错误

运行后出现下面的错误: 02-27 00:42:13.266: E/VdcInflateDelegate(17270): Exception while inflating  02-27 00...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)