uboot 在 ARM s3c2410 上移植过程


 [转帖]uboot 在 ARM s3c2410 上移植过程                              

总述
                        u-boot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序,在LINUX下可以通过CVS来得到当前正在开发的u-boot软件。当前版本号:u-boot
                        1.0.2,见include/version.h中的定义。
                        #cvs
                        –dserver:anonymous@cvs.sourceforge.net:/cvsroot/u-boot
                        login
                        #cvs –z3 –d
                        server:anonymous@cvs.sourceforge.net:/cvsroot/u-boot
                        checkout –P u-boot
                        本文讲述S3C2410中u-boot的移植过程:S3C2410的硬件配置是:
                        l CPU:S3C2410
                        l NOR: 16M,INTEL EP28F128J3A
                        l SDRAM:64M, MICRON 48LC16M16A2-75 B
                        l DM9000AVICOM (10/100M) 网卡
                        l USB HOST一个
                        配置自已的主板
                        l 阅读Makefile文件,在Makefile文件中添加两行:
                        s3c2410_config: unconfig
                        @./mkconfig $(@:_config=) arm arm920t s3c2410
                        其中ARM是CPU的种类, arm920t是ARM CPU对应的代码目录,s3c2410是自已主板对应的目录。
                        l 在board目录中建立s3c2410目录,复制smdk2410目录中的内容(cp smdk2410/*
                        s3c2410)。
                        l 在include/configs/目录下复制smdk2410.h(cp smdk2410.h
                        s3c2410.h)
                        l 修改ARM编译器的目录名及前缀
                        本人ARM编译器的目录是在:/opt/host/armv4l/bin/armv4l-unknown-linux-
                        把CROSS-COMPILE = arm-linux- 改为实际目录:如
                        CROSS-COMPILE =
/opt/host/armv4l/bin/arm4l-unknown-linux-
                        l 完成之后,可以测试一下你的配置:
                        #make s3c2410_config
                        #make
                        编译应该在processor.h中出错
                        l 修改processor.h中:
                        union debug_insn
                        {
                        u32 arm;
                        u16 thumb;
                        }
                        修改成:
                        union debug_insn
                        {
                        u32 arm_mode;
                        u16 thumb_mode;
                        }
                        l 编译成功,编译好的程序同smdk2410一样。
                        l
                        注:如果第一次修改后编译没有在processor.h中出错,而在examples目录出错,认真检查以上修改(修改的内容不正确),并在examples目录中运行touch命令(不运行touch还会出错,可能uboot
                        Makefile没有写好,没查原因),再编译。
                        生成最基本的u-boot, 没有功能,只能起动
                        l 修改程序连接地址:
                        在board/s3c2410中有一个config.mk文件,用于设置程序连接的起始地址,因为会在u-boot中增加功能,所以留下6M的空间,修改33F80000为33A00000。
                        l
                        为了以后能用uboot的GO命令执行修改过的用loadb或tftp下载的u-boot:在board/s3c2410的memsetup.S中标记符”0:”上加入五句:
                        l mov r3, pc
                        l ldr r4, =0x3FFF0000
                        l and r3, r3, r4 //以上三句得到实际起动的内存地址
                        l aad r0, r0, r3 //用GO命令调试uboot时,启动地址在RAM
                        l add r2, r2, r3 //把初始化内存信息的地址,加上实际起动地址
                        u 0标记符0, 原来存在的标记符)
                        l 用SJF软件通过jtag口下载编译的u-boot, 启动!读取环境块时CRC出错,然后进入SMDK#。
                        l 把MIZI vivi中的PrintHexWord, PrintWord拷过来,
                        这样可以在调试汇编时可以打印一些信息,但其中有的PrintHexNibble中有缺陷,ldr r0, [r2,
                        r0] 应改为ldrb r0, [r2, r0],这样可以在四字节对齐的系统中使用。
                        INTEL nor flash操作功能
                        l INTEL
                        的28F128,在board目录中找到CMI主板有此FLASH,把cmi中flash.c拷到s3c2410目录代换原来的flash.c。
                        l
                        cmi中的flash.c在写入时要交换字节,所以删除它的write_short()和wirte_buff()函数,把ep7312主板目录中flash.c的wirte_word()和wirite_buff()函数复制过来。把flash.c中的FLASH_BASE0_PRELIM改为CFG_FLASH_BASE。把FLASH_BLOCK_SIZE改为0x20000,(E28F128J3A
                        flash中块的大小是128K)。
                        l 把s3c2410.h中的flash内容由原来的:
                        1. #define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
                        2. #define CFG_FLASH_BASE PHYS_FLASH_1
                        3. #define CONFIG_AMD_LV400 1
                        4. #if 0
                        5. #define CONFIG_AMD_LV800 1
                        6. #endif
                        7. #define CFG_MAX_FLASH_BANKS 1 /* max number of memory
                        banks */
                        8. #ifdef CONFIG_AMD_LV800
                        9. #define PHYS_FLASH_SIZE 0x00100000 /* 1MB */
                        10. #define CFG_MAX_FLASH_SECT (19) /* max number of
                        sectors on one chip */
                        11. #define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0F0000) /*
                        addr of environment */
                        12. #endif
                        13. #ifdef CONFIG_AMD_LV400
                        14. #define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
                        15. #define CFG_MAX_FLASH_SECT (11) /* max number of
                        sectors on one chip */
                        16. #define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000)
                        改为:
                        1. #define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
                        2. #define PHYS_FLASH_SIZE 0x01000000 /* 16 MB */
                        3. ##define CFG_FLASH_PROTECTION
                        4. define CFG_FLASH_BASE PHYS_FLASH_1
                        5. #define CFG_MONITOR_BASE PHYS_FLASH_1
                        6. #define CFG_MAX_FLASH_BANKS 1/* max number of memory
                        banks */
                        7. #define CFG_MAX_FLASH_SECT 128/* max number of
                        sectors on one chip */
                        8. #define CFG_FLASH_ERASE_TOUT (2*CFG_HZ) /* Timeout
                        for Flash Erase */
                        9. #define CFG_FLASH_WRITE_TOUT (2*CFG_HZ) /* Timeout
                        for Flash Write */
                        10. #define CFG_ENV_IS_IN_FLASH 1
                        11. #define CFG_ENV_ADDR (PHYS_FLASH_1 + 0x60000)
                        12. #define CFG_ENV_SIZE 0x20000 /* Total Size of
                        Environment Sector */
                        l 把cmd_mem.c中的cmd_get_data_size函数的default_size全改为1,
                        默认以字节显示,更直观,并且不会出现地址对齐错(data
                        abort)。而在do_mem_mw()及mod_mem()中加入:
                        if(addr2info(addr) != NULL)
                        {
                        printf(“can’t wirte or modify in flash! Use cp
                        instead./n”);
                        return 0;
                        }
                        以使mw和mm命令不能修改flash中的数据,而只开放cp修改flash中的数据。
                        l 改board/s3c2410/flash.c中的flash_erase(),把start =
                        get_timer(0)移到for(), 以去掉flash_erase timeout 错误。
                        设置FLASH和SDRAM时序
                        根据28F128J3A-150,这是一150ns的flash,
                        所以把flash时序设为最慢。把s3c2410设成202.8MHZ, 并且工作在异步模式,
                        修改memsetup.S。
                        实现网卡功能
                        本人的网卡是DM9000,在uboot中没有相应的驱动,所以自已写了一个网卡驱动。
                        1. 把驱动拷到drivers/dm9000.c
                        2. 在drivers/Makefile中加入dm9000.o
                        3. 在lib_arm/board.c中修改CS8900=>DM9000
                        4. 在include/configs/s3c2410中加入以下几句
                        #define CONFIG_DRIVER_DM9000 1 /* we have a CS8900
                        on-board */
                        #define DM9000_BASE 0x08000000
                        #define DM9000_BUS16 1 /* the Linux driver does accesses
                        as shorts */
                        #define CONFIG_ETHADDR 08:00:3e:26:0a:5b
                        #define CONFIG_NETMASK 255.255.255.0
                        #define CONFIG_IPADDR 192.168.2.120
                        #define CONFIG_SERVERIP 192.168.2.122
                        实现USB功能
                        1. 在include/configs/s3c2410中的CONFIG_COMMANDS中加入:
                        l CFG_CMD_USB |/
                        l CFG_CMD_FAT |/
                        2. 并在文件中加入以下设置:
                        l #define CONFIG_USB_OHCI
                        l #define CONFIG_USB_STORAGE
                        l #define CONFIG_USB_KEYBOARD
                        l #define CONFIG_DOS_PARTITION
                        l #define CFG_DEVICE_DEREGISTER
                        l #define CONFIG_SUPPORT_VFAT
                        l #define LITTLEENDIAN
                        3. 这时usb start 和 usb info等功能正常,而其它一些功能不正常。
                        4. 功能fatls 不正常,修改fs/fat/fat.c
                        l 没有把VFAT的UNICODE字符转换过来,加入UNICODE字符转换函数。Uni2ansi(),
                        增加slot2str()的cp936版, 增加一个toshort()。
                        l 加入#define cp936
                        l 在fat_getenv()中有一个对齐错误,修改fat.h使fatbuff字对齐。
                        l 在do_fat_read()中加入两句,以消除列根目录错误。
                        l 在board/cmd_fat.c中加入两句,以消除没有usb storage设备时的错误:
                        if(!dev_desc)
                        printf(“Not init storage usb device:/n usb start/n usb
                        info/n usb scan/n”);
                        5. 修改fs/fat/fat.c
                        get_cluster()函数中加入 if(size / FS_BLOCK_SIZE > 0),
                        以防读文件时不能成功读出。
                        引导LINUX
                        现在我们可以引导LINUX了。
                        l 要引导bzip2的linux核,把CFG_MALLOC_SIZE改为大于4M
                        l 把编译好的LINUX内存,通过uboot/tools/mkimage转换成uboot格式
                        1. mkimage -A arm -O linux -T kernel -C bzip2 -a
                        30000000 -e 30008000 -n 'linux kernel' -d vmlinux1.bz2 c
                        2. mkimage -A arm -O linux -T kernel -C gzip -a 30000000
                        -e 30008000 -n 'linux kernel' -d vmlinux.gz b
                        3. mkimage -A arm -O linux -T ramdisk -C gzip -a 0 -e 0
                        -n 'init ramdisk' -d ramdisk.image.gz ramdisk
                        l 在include/configs/s3c2410.h中加入:
                        1. #define CONFIG_BOOTARGS "initrd=0x30800000,0x200000
                        root=/dev/ram init=/linuxrc console=ttyS0,115200"
                        2. #define CONFIG_BOOTFILE "vmlinux_for_uboot.gz"
                        3. #define CONFIG_BOOTCOMMAND "bootm 0x80000 0x1a0000"
                        0x80000为内核在flash中的位置。
                        0x1a0000为ramdisk.image.gz在flash中的内容。
                        4. #define CFG_LOAD_ADDR 0x30800000 /* default load
                        address */
                        l 在lib_arm/armlinux.c的do_bootm_linux中加入:
                        1. memcpy ((char *)CFG_LOAD_ADDR, (char *)data, len);
                        2. data = CFG_LOAD_ADDR;
                        把ramdisk复制到0x30800000位置的RAM中
                        3. 定义以下配置,把信息传入LINUX核心的TAG区
                        #define CONFIG_SETUP_MEMORY_TAGS
                        #define CONFIG_INITRD_TAG
                        #define CONFIG_CMDLINE_TAG
                        常用U-BOOT命令介绍
                        1. ?得到所有命令列表
                        2. help: help usb, 列出USB功能的使用说明
                        3. ping:注:只能开发板PING别的机器
                        4. setenv: 设置互环境变量:
                        5. setenv serverip 192.168.0.1
                        6. setenv ipaddr 192.168.0.56
                        7. setenv bootcmd ‘tftp 32000000 vmlinux; kgo 32000000’
                        8. saveenv: 保存环境变量
                        9. 在设置好环境变量以后, 保存变量值
                        10. tftp: tftp 32000000 vmlinux,
                        把server(IP=环境变量中设置的serverip)中/tftpdroot/
                        下的vmlinux通过TFTP读入到物理内存32000000处。
                        11. kgo: 起动没有压缩的linux内核,kgo 32000000
                        12. bootm:起动UBOOT TOOLS制作的压缩LINUX内核, bootm 3200000
                        13. protect: 对FLASH进行写保护或取消写保护, protect on
                        1:0-3(就是对第一块FLASH的0-3扇区进行保护),protect off 1:0-3取消写保护
                        14. erase: 删除FLASH的扇区, erase
1:0-2(就是对每一块FLASH的0-2扇区进行删除)
                        15. cp: 在内存中复制内容, cp 32000000 0
                        40000(把内存中0x32000000开始的0x40000字节复制到0x0处)
                        16. mw: 对RAM中的内容写操作, mw 32000000 ff
                        10000(把内存0x32000000开始的0x10000字节设为0xFF)
                        17. md: 修改RAM中的内容, md 32000000(内存的起始地址)
                        18. usb:
                        l usb start: 起动usb 功能
                        l usb info: 列出设备
                        l usb scan: 扫描usb storage(u 盘)设备
                        19. fatls:列出DOS FAT文件系统, 如:fatls usb 0列出第一块U盘中的文件
                        20. fatload: 读入FAT中的一个文件,如:fatload usb 0:0 32000000
                        aa.txt
                        21. 把USB中的aa.txt 读到物理内存0x32000000处!
                        22. flinfo: 列出flash的信息
                        23. loadb: 准备用KERMIT协议接收来自kermit或超级终端传送的文件。
                        24. nfs: nfs 32000000 192.168.0.2:aa.txt ,
                        把192.168.0.2(LINUX 的NFS文件系统)中的NFS文件系统中的aa.txt
                        读入内存0x32000000处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统移植 目 录 第一部分 前言....................................................................................................................................8 1 硬件环境......................................................................................................................................8 1.1 主机硬件环境.......................................................................................................................8 1.2 目标板硬件环境...................................................................................................................8 1.3 工具介绍...............................................................................................................................8 2 软件环境.......................................................................................................................................8 2.1 主机软件环境.......................................................................................................................8 2.1.1 Windows 操作系统.......................................................................................................8 2.1.2 Linux 操作系统 .......................................................................................................8 2.1.3 目标板最后运行的环境...............................................................................................9 2.2 Linux 下工作用户及环境....................................................................................................9 2.2.1 交叉工具的安装...........................................................................................................9 2.2.2 u­boot移植工作目录....................................................................................................9 2.2.3 内核及应用程序移植工作...........................................................................................9 2.3 配置系统服务.....................................................................................................................10 2.3.1 tftp 服务器的配置.......................................................................................................10 2.4 工具使用.............................................................................................................................12 2.4.1 minicom的使用..........................................................................................................12 3 作者介绍....................................................................................................................................13 3.1 策划, 组织, 指导, 发布者...................................................................................................13 3.2 ADS bootloader部分..........................................................................................................13 3.3 交叉工具部分.....................................................................................................................13 3.4 uboot 部分...........................................................................................................................13 3.5 内核部分.............................................................................................................................13 3.6 应用程序部分.....................................................................................................................13 3.7 网卡驱动部分.....................................................................................................................13 3.8 Nand Flash 驱动部分.........................................................................................................13 第二部分 系统启动bootloader 的编写(ADS).................................................................................14 1 工具介绍....................................................................................................................................14 1.1 ADS 命令行命令介绍........................................................................................................14 1.1.1 armasm........................................................................................................................14 1.1.2 armcc, armcpp.............................................................................................................14 1.1.3 armlink.........................................................................................................................14 2 基本原理....................................................................................................................................15 2.1 可执行文件组成及内存映射.............................................................................................15 2.1.1 可执行文件的组成.....................................................................................................15 2.1.2 装载过程.....................................................................................................................16 2.1.3 启动过程的汇编部分.................................................................................................17 2.1.4 启动过程的 C部分.....................................................................................................17 3 AXD的使用以及源代码说明...................................................................................................18 3.1 源代码说明.........................................................................................................................18 3.1.1 汇编源代码说明.........................................................................................................18 3.1.2 C语言源代码说明......................................................................................................23 3.1.3 源代码下载.................................................................................................................23 3.2 AXD的使用.......................................................................................................................23 3.2.1 配置仿真器.................................................................................................................23 3.2.2 启动 AXD 配置开发板...............................................................................................23 第三部分 GNU交叉工具链.............................................................................................................25 1  设置环境变量,准备源码及相关补丁...................................................................................25 1.1 设置环境变量.....................................................................................................................25 1. 2 准备源码包............................................................................................................................25 1.2.1 binuils..........................................................................................................................25 1.2.2 gcc...............................................................................................................................25 1.2.3 glibc.............................................................................................................................25 1.2.4 linux kernel..................................................................................................................26 1.3 准备补丁.............................................................................................................................26 1.3.1 ioperm.c.diff................................................................................................................26 1.3.2 flow.c.diff....................................................................................................................26 1.3.3 t­linux.diff....................................................................................................................26 1.4   编译 GNU binutils...........................................................................................................26 1.5 准备内核头文件.................................................................................................................26 1.5.1 使用当前平台的 gcc编译内核头文件......................................................................26 1.5.2 复制内核头文件.........................................................................................................27 1.6   译编glibc头文件.............................................................................................................27 1.7   编译gcc第一阶段............................................................................................................27 1.8   编译完整的glibc..............................................................................................................27 1.9  编译完整的gcc.................................................................................................................28 2 GNU 交叉工具链的下载...........................................................................................................28 2.1 ARM 官方网站...................................................................................................................28 2.2 本文档提供的下载.............................................................................................................28 3 GNU 交叉工具链的介绍与使用...............................................................................................29 3.1 常用工具介绍.....................................................................................................................29 3.2.1 arm­linux­gcc的使用.................................................................................................29 3.2.2 arm­linux­ar 和 arm­linux­ranlib 的使用..................................................................30 3.2.3 arm­linux­objdump 的使用.........................................................................................30 3.2.4 arm­linux­readelf 的使用............................................................................................31 3.2.6 arm­linux­copydump 的使用......................................................................................32 4 ARM GNU 常用汇编语言介绍.................................................................................................32 4.1 ARM GNU常用汇编伪指令介绍.....................................................................................32 4.2 ARM GNU专有符号.........................................................................................................33 4.3 操作码.................................................................................................................................33 5 可执行生成说明........................................................................................................................33 5.1 lds文件说明.......................................................................................................................33 5.1.1 主要符号说明.............................................................................................................33 5.1.2 段定义说明.................................................................................................................34 第四部分 u­boot移植...................................................................................................................35 1 u­boot的介绍及系统结构.........................................................................................................35 1.1 u­boot 介绍.........................................................................................................................35 1.2 获取u­boot.........................................................................................................................35 1.3 u­boot 体系结构.................................................................................................................35 1.3.1 u­boot目录结构..........................................................................................................35 2 uboot的启动过程及工作原理...................................................................................................36 2.1 启动模式介绍.....................................................................................................................36 2.2 阶段1 介绍.........................................................................................................................36 2.2.1 定义入口.....................................................................................................................36 2.2.2 设置异常向量.............................................................................................................37 2.2.3 设置 CPU的模式为SVC模式..................................................................................37 2.2.4 关闭看门狗.................................................................................................................37 2.2.5 禁掉所有中断.............................................................................................................37 2.2.6 设置以 CPU的频率....................................................................................................37 2.2.7 设置 CP15...................................................................................................................37 2.2.8 配置内存区控制寄存器.............................................................................................38 2.2.9 安装 U­BOOT 使的栈空间........................................................................................38 2.2.10 BSS 段清 0................................................................................................................38 2.2.11 搬移 Nand Flash 代码...............................................................................................39 2.2.12 进入 C代码部分.......................................................................................................39 2.3 阶段2 的C语言代码部分 .............................................................................................39 2.3.1 调用一系列的初始化函数.........................................................................................39 2.3.2 初始化网络设备.........................................................................................................41 2.3.3 进入主 UBOOT 命令行..............................................................................................41 2.4 代码搬运.............................................................................................................................41 3 uboot移植过程.......................................................................................................................42 3.1 环境.....................................................................................................................................42 3.2 步骤.....................................................................................................................................42 3.2.1 修改 Makefile..............................................................................................................42 3.2.2 在 board 子目录中建立 crane2410.............................................................................42 3.2.3 在 include/configs/中建立配置头文件......................................................................42 3.2.4 指定交叉编译工具的路径.........................................................................................42 3.2.5 测试编译能否成功.....................................................................................................42 3.2.6 修改 lowlevel_init.S 文件...........................................................................................43 3.2.9 UBOOT 的 Nand Flash 移植......................................................................................45 3.2.8 重新编译u­boot..........................................................................................................45 3.2.9 把 u­boot烧入flash....................................................................................................45 4  U­BOOT 命令的使用................................................................................................................46 4.1 U­BOOT命令的介绍.........................................................................................................46 4.1.1 获得帮助信息.............................................................................................................46 4.2 常用命令使用说明.............................................................................................................47 4.2.1 askenv(F).....................................................................................................................47 4.2.2 autoscr.........................................................................................................................47 4.2.3 base   ...........................................................................................................................47 4.2.4 bdinfo...........................................................................................................................47 4.2.5 bootp............................................................................................................................47 4.2.8 tftp(tftpboot)................................................................................................................48 4.2.9 bootm...........................................................................................................................48 4.2.10 go...............................................................................................................................48 4.2.11 cmp   .........................................................................................................................48 4.2.12 coninfo  .....................................................................................................................48 4.2.13 cp...............................................................................................................................48 4.2.14 date............................................................................................................................49 4.2.15 erase(F)......................................................................................................................49 4.2.16 flinfo(F).....................................................................................................................49 4.2.17 iminfo........................................................................................................................49 4.2.18 loadb..........................................................................................................................49 4.2.19 md..............................................................................................................................49 4.2.20 mm ............................................................................................................................50 4.2.21 mtest   .......................................................................................................................50 4.2.22 mw.............................................................................................................................50 4.2.23 nm   ...........................................................................................................................50 4.2.24 printenv......................................................................................................................50 4.2.25 ping  ..........................................................................................................................51 4.2.26 reset...........................................................................................................................51 4.2.27 run   ...........................................................................................................................51 4.2.28 saveenv(F).................................................................................................................51 4.2.29 setenv.........................................................................................................................51 4.2.30 sleep...........................................................................................................................51 4.2.31 version.......................................................................................................................51 4.2.32 nand info....................................................................................................................51 4.2.33 nand device ........................................................................................................51 4.2.34 nand bad....................................................................................................................51 4.2.35 nand read...................................................................................................................52 4.2.36 nand erease................................................................................................................52 4.2.37 nand write..................................................................................................................52 4.3 命令简写说明.....................................................................................................................52 4.4 把文件写入NandFlash.......................................................................................................53 4.5 下载提供.............................................................................................................................53 5 参考资料....................................................................................................................................53 第五部分 linux 2.6 内核移植.......................................................................................................53 1 内核移植过程............................................................................................................................53 1.1 下载linux 内核...................................................................................................................53 1.2 修改Makefile.....................................................................................................................53 1.3 设置flash 分区...................................................................................................................54 1.3.1 指明分区信息.............................................................................................................54 1.3.2 指定启动时初始化.....................................................................................................56 1.3.3 禁止 Flash ECC校验 ................................................................................................56 1.4 配置内核.............................................................................................................................56 1.4.1 支持启动时挂载 devfs................................................................................................56 1.4.2 配置内核产生.config 文件.........................................................................................57 1.4.3 编译内核.....................................................................................................................58 1.4.4 下载 zImage到开发板................................................................................................58 2 创建 uImage................................................................................................................................61 2.1 相关技术背景介绍.............................................................................................................61 2.2 在内核中创建uImage 的方法...........................................................................................61 2.2.1 获取 mkimage工具.....................................................................................................61 2.2.2 修改内核Makefile文件.........................................................................................61 3 追加实验记录.............................................................................................................................62 3.1 移植 linux­2.6.15.7..............................................................................................................62 3.2 移植 linux­2.6.16.21............................................................................................................62 3.3 移植linux­2.6.17................................................................................................................62 4 参考资料....................................................................................................................................62 第六部分 应用程序的移植..............................................................................................................63 1 构造目标板的根目录及文件系统.............................................................................................63 1.1 建立一个目标板的空根目录.............................................................................................63 1.2 在 my_rootfs 中建立Linux 目录树...................................................................................63 1.3 创建linuxrc文件................................................................................................................63 2 移植 Busybox.............................................................................................................................64 2.1 下载busybox......................................................................................................................64 2.3 编译并安装Busybox..........................................................................................................65 3 移植 TinyLogin...........................................................................................................................66 3.1 下载.....................................................................................................................................66 3.2 修改tinyLogin 的 Makefile................................................................................................66 3.3 编译并安装.........................................................................................................................66 4 相关配置文件的创建................................................................................................................66 4.1 创建帐号及密码文件.........................................................................................................66 4.2 创建profile文件................................................................................................................67 4.4 创建fstab 文件...................................................................................................................67 4.5 创建inetd.conf 配置文件...................................................................................................67 5 移植 inetd....................................................................................................................................67 5.1 inetd 的选择及获取............................................................................................................67 5.1.1 获取 inetd....................................................................................................................67 5.2 编译inetd............................................................................................................................67 5.2.1 修改 configure文件....................................................................................................67 5.2.2 编译 ...........................................................................................................................68 5.3 配置inetd............................................................................................................................68 5.3.1 拷贝 inetd 到根文件系统的usr/sbin 目录中.............................................................68 6 移植 thttpd Web 服务器.............................................................................................................69 6.1 下载.....................................................................................................................................69 6.2 编译thttpd...........................................................................................................................69 6.3 配置.....................................................................................................................................69 6.3.1 拷贝 thttpd 二进制可执行文件到根文件系统/usr/sbin/目录中...............................69 6.3.2 修改 thttpd 配置文件..................................................................................................69 6.3.3 转移到根文件系统目录,创建相应的文件.............................................................69 7 建立根目录文件系统包............................................................................................................70 7.1 建立CRAMFS 包...............................................................................................................70 7.1.1 下载 cramfs 工具........................................................................................................70 7.1.2 制作 cramfs 包............................................................................................................70 7.1.3 写 cramfs 包到Nand Flash.........................................................................................70 8 参考资料....................................................................................................................................70 第七部分 Nand flash 驱动的编写与移植........................................................................................71 1 Nand flash 工作原理..................................................................................................................71 1.1 Nand flash 芯片工作原理..................................................................................................71 1.1.1 芯片内部存储布局及存储操作特点.........................................................................71 1.1.2 重要芯片引脚功能.....................................................................................................71 1.1.3 寻址方式.....................................................................................................................71 1.1.4 Nand flash 主要内设命令详细介绍...........................................................................72 1.2 Nand Flash 控制器工作原理.............................................................................................72 1.2.1 Nand Flash 控制器特性..............................................................................................72 1.2.2 Nand Flash 控制器工作原理......................................................................................72 1.3 Nand flash 控制器中特殊功能寄存器详细介绍 ............................................................72 1.4 Nand Flash 控制器中的硬件ECC介绍............................................................................73 1.4.1 ECC产生方法............................................................................................................73 1.4.2 ECC生成器工作过程................................................................................................74 1.4.3 ECC的运用................................................................................................................74 2 在 ADS下flash 烧写程序.........................................................................................................74 2.1 ADS 下 flash 烧写程序原理及结构...................................................................................74 2.2 第三层实现说明.................................................................................................................74 2.1.1 特殊功能寄存器定义.................................................................................................74 2.1.2 操作的函数实现.........................................................................................................74 2.3 第二层实现说明.................................................................................................................75 2.3.1 Nand Flash 初始化......................................................................................................75 2.3.3 获取 Nand flash ID......................................................................................................75 2.3.4 Nand flash 写入...........................................................................................................76 2.3.5 Nand flash 读取...........................................................................................................77 2.3.6 Nand flash 标记坏块...................................................................................................78 2.3.7 Nand Flash 检查坏块..................................................................................................79 2.3.8 擦除指定块中数据.....................................................................................................79 2.4  第一层的实现....................................................................................................................80 3 在 U­BOOT 对Nand Flash 的支持............................................................................................82 3.1 U­BOOT对从 Nand Flash 启动的支持.............................................................................82 3.1.1 从 Nand Flash 启动U­BOOT 的基本原理................................................................82 3.1.2 支持 Nand Flash 启动代码说明.................................................................................82 3.2 U­BOOT对 Nand Flash 命令的支持.................................................................................84 3.2.1 主要数据结构介绍.....................................................................................................84 3.2.2 支持的命令函数说明.................................................................................................85 4 在 Linux 对Nand Flash 的支持.................................................................................................87 4.1 Linux 下Nand Flash 调用关系..........................................................................................87 4.1.1 Nand Flash 设备添加时数据结构包含关系..............................................................87 4.1.2 Nand Flash 设备注册时数据结构包含关系..............................................................87 4.2 Linux 下Nand Flash 驱动主要数据结构说明..................................................................88 4.2.1 s3c2410 专有数据结构...............................................................................................88 4.2.2 Linux 通用数据结构说明..........................................................................................89 4.3.1 注册 driver_register....................................................................................................94 4.3.2 探测设备 probe...........................................................................................................94 4.3.3 初始化 Nand Flash 控制器.........................................................................................94 4.3.4 移除设备.....................................................................................................................94 4.3.5 Nand Flash 芯片初始化..............................................................................................94 4.3.6  读 Nand  Flash............................................................................................................95 4.3.7  写 Nand Flash.............................................................................................................95 第八部分 Cs8900a网卡驱动的编写与移植...................................................................................95 1 Cs8900a工作原理......................................................................................................................95 2 在 ADS下cs8900a的实现........................................................................................................95 2.1 在 cs8900a下实现的ping 工具.........................................................................................95 3 在 u­boot下cs8900a的支持......................................................................................................96 3.1 u­boot 下cs8900a的驱动介绍...........................................................................................96 3.2 u­boot 下cs8900a的移植说明...........................................................................................96 4 在 linux 下cs8900a驱动的编写与移植....................................................................................96 4.1 Linux 下cs8900a的驱动说明............................................................................................96 4.2 Linux 下 cs8900a的移植说明...........................................................................................96 4.2.1 为 cs8900a建立编译菜单..........................................................................................96 4.2.2 修改 S3C2410相关信息............................................................................................97 序 该文档的目的是总结我们在工作中的一些经验,并把它们分享给喜欢 ARMLinux 的朋友, 如有错误 之处,请大家多多指点. 同样, 我们也希望更多人能把自己的工作经验和体会加入该文档,让大家共同进步. 该文档是一份交流性文档, 只供个人学习与交流,不允许公司和企业用于商业行为

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值