linux 的移植
源码下载:
sudo apt-cache search linux-source
sudo apt-get install linux-source-2.6.32
解压
关于配置的修改:
1,顶层目录中,更改
ARCH ?=arm
CROSS_COMPILE ?= arm-unknown-linux-gnueabi-
这个地方是使用的自己做的编译器。所以不是很一样
2,使用配置文件 cp arch/arm/configs/s3c2410_defconfig ./.config
代码更改:改一下晶振频率就可以
arch/arm/mach-s3c2440/mach-smdk2440.c
s3c24xx_init_clocks (16934400);改为
s3c24xx_init_clocks (12000000);
编译:
make menuconfig
保存即可
要把 u-boot 编译的时候生成的二进制工具 mkimage 放到/usr/bin/目录下(也就是添加命令
mkimage),这样才会自动生成 uImage(不然只会生成 vmlinux 而不会做成 uImage)
make uImage
这里讲解一下 mkimage 和下面要讲到的从内存启动 linux 内核的原理
现在把内核下载到内存中跑起来
把 arch/arm/boot 下的 uImage 放到我们的 tftp 根目录下
u-boot 中输入命令:
tftp 32000000 uImage (默认是 16 进制)
bootm 32000000
检测,解压内核成功,OK 了,最后会挂载根文件系统失败,我们继续解决
本来一直困惑,我们的 u-boot 跑在 RAM 中,然后又把内核镜像下载到 RAM 中,然后把内核镜像
从 RAM 搬移到 FLASH 中,那么我们的 u-boot 岂不是被内核镜像覆盖掉了??
我们的 U-BOOT 被搬移到了 RAM 的底端 ,最底端的 1M 处,所以不会冲突.
issue1:
1)搭建好tftp服务器
2) 配置好uboot IP
3)配置好主机IP
开发板能ping通主机,主机ping不通开发板。我一直在捣鼓,后来发现主机ping不通开发板是正常的。只要开发板能ping通主机就能使用网口下载程序到开发板。
但是一直下载不了,是因为tftp服务器没起来。sudo service tftpd-hpa restart
OK了
issue2:
卡在starting kernel那不动了桑塔人听
启动参数,console=ttySAC0,115200 没有设置对。 其实还有个错误,编译使用的.config文件是错误的。主要是前面那个错误。
阅读(1094) | 评论(0) | 转发(0) |