诚信经营,质量为首,诚信至上,真诚为您服务
--------------------------------------------------
允许我给您介绍下这个产品和我们的服务:现货 全新原装*** 15天质量问题无条件包退换
一年质保 完善的***服务 雄厚的技术人才后盾 真正的为客户排忧解难
客户的满意 是对我们的肯定 更是我们的动力
单子,得之,我幸。不得,我力争到底 全心服务
--------------------------------------------------
ABB 3HAB2220-1 DSQC 317
优质的产品★优质的价格★优质的***★优质的服务,是您***佳的选择!
mov r1,#0x0
mov r2,#0x60000
bl nand_read_ll
tst r0,#0x0
beq ok_nand_read
由于在后面加载Linux 内核和根文件系统时, 使用的是tftp 方式, 所以必须添加D***000EP 网卡的驱动。在mini2440.h 文件中, 其主要的配置如下:
#define CONFIG_DRIVER_D***000 1
#define CONFIG_NET_MULTI 1
#define CONFIG_D***000_NO_SROM 1
#define CONFIG_D***000_BASE 0x20000300
#define D***000_DATA (CONFIG_D***000_BASE +4)
其中,CONFIG_D***000_BASE 宏是***重要的, 因为它定义的是网卡的地址, 不同的网卡有不同的地址,D***000EP 访问的基址为0x20000000, 之所以再偏移0x300 是由它的特性决定的。
(3) 要正确引导Linux 内核, 还需要配置下面几个重要的宏定义, 这几个宏定义不同, 意味着引导Linux 内核的方式也不同。
#define CONFIG_BOOTARGS"noinitrd root=/dev/mtdblock3
init=/linuxrc c***ole=ttySAC0,115200 mem=64M"
其中,root =/dev/mtdblock3 是由Linux 中的Nand Flash 分区所决定的, 意味着Nand Flash 的第4 个分区为根文件系统。
#define CONFIG_BOOTCOMMAND"nand read 0x32000000 0x60000 0x560000;bootm 0x32000000"
这个宏定义是将Nand Flash 中0x60000 -0x560000( 和kernel 分区一致) 的内容读到内存0x32000000 中, 然后用bootm 命令来执行。
要正常地引导Linux 内核, 必须要具备如下几个条件:
(1)CPU 寄存器
R0=0 ;
R1= 机器类型ID ; 对于ARM 结构的CPU, 其机器类
型ID 在linux/arch/arm/tools/mach-types ;
R2=启动参数标记列表在RAM 中起始基地址。
(2)CPU 工作模式
必须禁止中断(IRQs 和FIQs ) ;
CPU 必须为SVC 模式。
(3)Cach 和MMU 的设置
MMU 必须关闭;
指令Cach 可以打开也可以关闭;
数据Cach 必须关闭。
3 Linux2.6.32.2 内核的移植
3.1 内核的获取
Linux 内核的更新很快, 可以从http:///pub/linux/kernel/ 得到***新的Linux 内核版本, 本文使用的Linux 内核版本是Linux -2.6.32.2, 交叉编译工具使用符合EABI 标准的arm-linux-gcc-4.3.2 。
3.2 内核的移植
可以在内核的根目录下, 运行make menuconfig 命令, 对内核进行适当的裁剪, 以适应硬件平台。
对内核进行适当的裁剪, 以适应硬件平台。
(1) 修改Makefile 文件
欲设置Linux 的默认平台为ARM 平台, 需进入Linux-2.6.32 文件夹中, 修改此目录下的Makefile 文件。
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH ?=arm // 使用的目标平台
CROSS_COMPILE ?=arm-linux- // 使用的交叉编译器,
这里使用系统默认的编译器
(2) 关于机器码
在启动内核时, 根据BootLoader 传入的机器码(MACH_TYPE) 来决定应启动哪种目标平台[ 6], 本开发平台的机器码为1999 。机器码存放在文件opt/kernel/linux-2.6.32.2/arch/arm/tools/mach-types 中。
mini2440 MACH_MINI2440 MINI2440 1999 // 机器码
如果机器码不匹配, 引导内核不成功, 则会出现如下的错误提示:
Uncompressing
Linux………………………………………………………………