1.修改顶层Makefile的ARCH和CROSS_COMPILE,以便make s3c2410_defconfig使用公板的默认配置编译内核(arch/arm/configs)。
vim打开Makefile命令行模式下‘:196’行--->ARCH := arm CROSS_COMPILE ?= /usr/local/arm/bin/arm-linux- --->make s3c2410_defconfig
2.make s3c2410_defconfig-->SystemType中只选择2416
(切记系统默认已选择S3c2410及S3c2440等,一定只选S3c2416其他的全取消选择否则内核起不来,卡在Uncompressing Linux... done, booting the kernel.)。
机器码:若单板使用CPU对应公板的机器码则Uboot和内核arch/arm/tools/mach-types中的机器码一般一致是个固定值,故无需修改;
若单板使用自己申请的机器码则需要在uboot中查看该机器码并修改内核中arch/arm/tools/mach-types机器码。
修改时钟:单板CPU外接晶振为12MHz,故将arch/arm/mach-s3c2416/Mach-smdk2416.c中__init smdk2416_map_io(void)函数中,将时钟频率改成12MHz-->s3c2416_init_clocks(12000
经过上面两步内核已经可以启动,下面依次是根文件系统和外设驱动移植:
解压yaffs2.tar.bz2包后进入目录,执行./patch-ker.sh c m /home/yuhua/BSP/linux-3.3.8(参数c m是该shell脚本定义参数)----->
printenv bootargs后设置setenv bootargs root=/dev/mtdblock3 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200
(root和rootfstype分别制定根文件系统的位置和根文件系统类型,init指定系统起来运行的第一个启动脚本)----->
nand write.yaffs 0xc0008000 c00000 9b2bc0(9b2bc0是512+16的整数倍,且执行nand write.yaffs命令时别用小键盘输数字否则移植提示写入错误)
也可通过NFS启动系统或uboot中进调试内核(zimage-debug),然后将根文件系统直接解压到flash的MTDblock3分区也可实现rootfs的烧写;----->
如何让内核启动时打印如下打印信息:menuconfig时选中kernel hacking中的kernel debugging和 kernel lowlevel debugging functions、Early printk即可。
s3c24xx_serial_probe(c047c4a8) 0
s3c24xx_serial_probe: initialising port c046a3e8...
s3c24xx_serial_init_port: port=c046a408, platdev=c047c4a8
resource c0459164 (50000000..50003fff)
port: map=50000000, mem=f7000000, irq=70 (70,71), clock=1
s3c24xx_serial_probe: adding port
s3c24xx_serial_console_setup: co=c046a878 (0), 115200
s3c24xx_serial_console_setup: port=c046a408 (0)
s3c24xx_serial_console_setup: baud 115200
udivslot = 0808 (div 2)
config: 8bits/char
setting ulcon to 00000003, brddiv to 35, udivslot 00000808
uart: ulcon = 0x00000003, ucon = 0x00000bc5, ufcon = 0x00000051
阅读(974) | 评论(0) | 转发(0) |