Linux系统移植002: 编译Uboot 2014.04 基于AT91SAM9X35EK
来源:互联网 发布:淘宝名人补剂 编辑:程序博客网 时间:2024/04/30 15:09
这里使用的版本为:u-boot-2014.04
查看并修改位置如下:
u-boot-2014.04/include/configs/at91sam9x5ek.h
(1)查看一下Linux内核在NandFlash中的烧写位置:默认为:0x200000。
如下为Linux内核启动的参数:在NandFlash里启动。
/* bootstrap + u-boot + env + linux in nandflash */
#define CONFIG_ENV_IS_IN_NAND
#define CONFIG_ENV_OFFSET 0xc0000
#define CONFIG_ENV_OFFSET_REDUND 0x100000
#define CONFIG_ENV_SIZE 0x20000 /* 1 sector = 128 kB */
#define CONFIG_BOOTCOMMAND "nand read " \
"0x22000000 0x200000 0x300000; " \
"bootm 0x22000000"
0x22000000为SDRAM的位置,0x200000为Linux内核在NandFlash的开始地址(如果使用SAM-BA v2.15烧写,烧写地址填0x200000),0x300000为要读取Linux内核的区域大小(读取大小,要超过实际内核的大小,需要为0x20000 的整数倍,保证完整读取到SDRAM里启动。)
(2)修改一下Linux内核的启动参数
#ifdef CONFIG_SYS_USE_MMC
#define CONFIG_BOOTARGS "mem=128M console=ttyS0,115200 " \
"mtdparts=atmel_nand:" \
"8M(bootstrap/uboot/kernel)ro,-(rootfs) " \
"root=/dev/mmcblk0p2 " \
"rw rootfstype=ext4 rootwait"
#else
#define CONFIG_BOOTARGS \
"mem=128M console=ttyS0,115200 " \
"mtdparts=atmel_nand:8M(bootstrap/uboot/kernel)ro,-(rootfs) " \
"root=/dev/mtdblock1 rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs"
#endif
根据板子的硬件:DDR SDRAM 为128MB ,NandFlash为:256MB ,控制台串口使用DEBUG串口,ttyS0,115200波特率,需要修改一下NandFlash的分区,这里为两个分区,一个bootstrap/uboot/kernel,只读的8M,0x0~0x7FFFFF,注意:十六进制:0x100000为1M。
我使用UBI根文件系统,目前嵌入式文件系统一般采用yaffs2与UBI文件系统。
编译的命令如下:
make distclean
make at91sam9x5ek_nandflash_config (这里采用bootstrap + uboot+kernel+rootfs全烧写在nandflash里,也就是nandflash启动。)
make CROSS_COMPILE=arm-none-linux-gnueabi-
注意:at91sam9x5ek_nandflash_config 这个不是随便取的,由u-boot-2014.04目录下的:boards.cfg文件里的 定义的名称得到。如果是新的开发板,需要添加相应的文件与配置等。
烧写在Nandflash后,重新上电,串口打印的启动信息如下:
RomBOOT
AT91Bootstrap 3.6.0
NAND: Done to load image
U-Boot 2014.04 (Feb 03 2016 - 16:08:28)
CPU: AT91SAM9X35
Crystal frequency: 12 MHz
CPU clock : 400 MHz
Master clock : 133.333 MHz
DRAM: 128 MiB
WARNING: Caches not enabled
NAND: 256 MiB
MMC: mci: 0
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: macb0
Warning: failed to set MAC address
Hit any key to stop autoboot: 0
NAND read: device 0 offset 0x200000, size 0x300000
Skipping bad block 0x00320000
3145728 bytes read: OK
Wrong Image Format for bootm command
ERROR: can't get kernel image! (这里是没有烧写Linux 内核的原因)
U-Boot>
0 0
- Linux系统移植002: 编译Uboot 2014.04 基于AT91SAM9X35EK
- Linux系统移植001: 编译AT91Bootstrap基于AT91SAM9X35EK
- 基于AT91SAM9X35EK的嵌入式Linux+UBI根文件系统移植成功
- 嵌入式Linux移植相关经验积累:基于AT91SAM9X35EK
- linux系统移植和Uboot 移植
- 系统移植-uboot移植
- 基于MT7688模块的开发笔记4——编译Linux系统和Uboot
- Uboot和系统移植
- 交叉编译之一:UBOOT 、linux内核、文件系统移植
- linux 系统移植 (一,uboot启动过程)
- 嵌入式linux之Uboot和系统移植--基础
- 嵌入式linux之Uboot和系统移植--Makefile
- 嵌入式linux之Uboot和系统移植--主Makefile分析
- 嵌入式linux之Uboot和系统移植--基础
- 嵌入式linux之Uboot和系统移植--基础
- 嵌入式linux之Uboot和系统移植--基础
- S5PV210 构建最小linux系统(2)---->Uboot移植
- Uboot的编译、移植-2
- 使用maven Debug断点出现无法找到源问题
- oracle SGA区基础知识与查看命令
- POJ_P1006 生理周期(中国剩余定理)
- Xcode7.2中如何添加一个Empty Application模板
- Java正则表达式简单用法
- Linux系统移植002: 编译Uboot 2014.04 基于AT91SAM9X35EK
- SQL中的where条件,在数据库中提取与应用浅析
- php调用com组件加载dos命令解压缩的方法
- 使用child_process 执行命令
- Oracle学习之数据库管理(二)索引&约束&表分区
- ABBYY PDF Transformer+完整功能列表汇总(三)
- 【Android】安卓学习笔记之日志工具的使用
- C# 使用属性实现位状态结构体
- html之线包字