已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一 1 到 ftp ftp denx de pub u boot 下载 u boot 2010 06 tar bz2 2 解压 tar jxvf u boot 2010 06 tar bz2 3 进入 uboot cd u boot 2010 06 4 删减 uboot 进入 board 留下 samsung 其它全部删除 ls grep v samsung xargs rm rf 进入 arch 留下 arm 其它全部删除 ls grep v arm xargs rm rf 进入 arch arm cpu 留下 arm920t 其它全部删除 ls grep v 920 xargs rm rf 二 1 建立自己的 DEMO 板 cd board samsung mkdir smdk2440 cp rf smdk2410 smdk2440 将 2410 下所有的代码复制到 2440 下 cd smdk2440 进入 smdk2440 目录 mv smdk2410 c smdk2440 c 将 smdk2440 下的 smdk2410 c 改名为 smdk2440 c 然后在文件夹 samsung 里留下 smdk2440 其它全部删除 cp include configs smdk2410 h include configs smdk2440 h 建立 2440 头文件 在 include configs 下留下 smdk2440 h 其它全部删除 vi board samsung smdk2440 Makefile 修改 smdk2440 下 Makefile 的编译项 如下 COBJS smdk2440 o flash o 修改第 28 行因在 smdk2440 下我们将 smdk2410 c 改名为 smdk2440 c 2 顶层 Makefile 文件 查找到 smdk2410 config 的地方 在他下面按照 smdk2410 config 的格式建立 my2440 config 的编译选项 另外还要指定交叉编译器 修 改 159 行 CROSS COMPILE arm linux 指定交叉编译器为 arm linux gcc smdk2410 config unconfig 2410 编译选项格式 MKCONFIG config arm arm920t smdk2410 samsung s3c24x0 smdk2440 config unconfig 修改蒂 3054 行 2440 编译选项格式 MKCONFIG config arm arm920t smdk2440 samsung s3c24x0 说明 arm CPU 的架构 ARCH arm920t CPU 的类型 smdk2440 对应在 board 目录下建立新的开发板项目的目录 samsung 新开发板项目目录的上级目录 如直接在 board 下建立新的开发板项 目的目录 则这里就为 NULL s3c24x0 CPU 型号 注意 编译选项格式的第二行要用 Tab 键开始 否则编译会出错 3 测试编译新建的 smdk2440 开发板项目 在 uboot 根目录测试 make smdk2440 config make 即可在 uboot 根目录下生成 bin 文件 三三 Make distclean 在 include configs smdk2440 h 头文件中添加 CONFIG S3C2440 宏 vivi include configs smdk2440 hinclude configs smdk2440 h 在第 40 行添加 define define CONFIG S3C2440CONFIG S3C2440 1 1 1 1 start S 找到程序的入口点 reset set the cpu to SVC32 mode mrs r0 cpsr bic r0 r0 0 x1f orr r0 r0 0 xd3 msr cpsr r0 1 1 在下面添加开发板的 LED 测试代码 以方便观看 u boot 的运行 测试开发板的 LED if 1 P284 LED 分别由 S3C2440 的 PB5 6 7 8 口来控制 define GPBCON 0 x56000010 define GPBDAT 0 x56000014 define GPBUP 0 x56000018 ldr r0 GPBUP ldr r1 0 x7FF 即 二进制 11111111111 关闭 PB 口上拉 str r1 r0 ldr r0 GPBCON 配置 PB5 6 7 8 为输出口 对应 PBCON 寄存器的第 10 17 位 ldr r1 0 x154FD 即 二进制 010101010011111101 str r1 r0 ldr r0 GPBDAT ldr r1 0 x1C0 即 二进制 111000000 PB5 设为低电平 6 7 8 为高电平 str r1 r0 点亮开发板上的 LED1 endif 1 2 1 2 去掉 117 118 行点亮 AT91RM9200DK 系列 LED 的代码 blbl coloured LED initcoloured LED init blbl red LED onred LED on 1 3 中断 时钟 if defined CONFIG S3C2410 ldr r1 0 x3ff ldr r0 INTSUBMSK str r1 r0 endif 164 行行 if defined CONFIG S3C2440 添加添加 s3c2440 的中断禁止部分的中断禁止部分 ldr r1 0 x7fff 根据根据 2440 芯片手册 芯片手册 INTSUBMSK 寄存器有寄存器有 15 位可位可 用用 ldr r0 INTSUBMSK str r1 r0 endif if defined CONFIG S3C2440 添加添加 s3c2440 的时钟部分的时钟部分 define MPLLCON 0 x4C000004 系统主频配置寄存器基地址系统主频配置寄存器基地址 define UPLLCON 0 x4C000008 USB 时钟频率配置寄存器基地址时钟频率配置寄存器基地址 ldr r0 CLKDIVN 设置分频系数设置分频系数 FCLK HCLK PCLK 1 4 8 mov r1 5 str r1 r0 ldr r0 MPLLCON 设置系统主频为设置系统主频为 405MHz ldr r1 0 x7F021 这个值参考芯片手册这个值参考芯片手册 PLL VALUE SELECTION TABLE 部分部分 str r1 r0 ldr r0 UPLLCON 设置设置 USB 时钟频率为时钟频率为 48MHz ldr r1 0 x38022 这个值参考芯片手册这个值参考芯片手册 PLL VALUE SELECTION TABLE 部分部分 str r1 r0 else 其他开发板的时钟部分 这里就不用管了 我们现在是做其他开发板的时钟部分 这里就不用管了 我们现在是做 2440 的的 FCLK HCLK PCLK 1 2 4 default FCLK is 120 MHz ldr r0 CLKDIVN mov r1 3 str r1 r0 endif 接下来为了观看 u boot 的运行 添加一段 LED 的程序 此时点亮 LED2 关闭其它 LED 点亮 LED2 ldr r0 GPBDAT ldr r1 0 x1A0 即 二进制 110100000 PB6 设为低电平 5 7 8 为高电平 str r1 r0 点亮开发板上的 LED2 2 S3C2440 的时钟部分除了在 start S 中添加外 还要分别在 board samsung smdk2440 smdk2440 c 和 cpu arm920t s3c24x0 speed c 中修 改或添加部分代码 如下 vi board samsung smdk2440 smdk2440 c 时钟部分修改第 34 行和在 45 行添加如下红色部分 define FCLK SPEED 2 设置默认等于设置默认等于 2 即下面红色代码部分有效 即下面红色代码部分有效 if FCLK SPEED 0 Fout 203MHz Fin 12MHz for Audio define M MDIV 0 xC3 define M PDIV 0 x4 define M SDIV 0 x1 elif FCLK SPEED 1 Fout 202 8MHz define M MDIV 0 xA1 define M PDIV 0 x3 define M SDIV 0 x1 elif FCLK SPEED 2 Fout 405MHz define M MDIV 0 x7F 这三个值根据这三个值根据 S3C2440 芯片手册芯片手册 PLL VALUE SELECTION TABLE 部分进行设置部分进行设置 define M PDIV 0 x2 define M SDIV 0 x1 endif USB 时钟部分修改第 51 行和在 61 行添加如下红色部分 define USB CLOCK 2 设置默认等于设置默认等于 2 即下面红色代码部分有效 即下面红色代码部分有效 if USB CLOCK 0 define U M MDIV 0 xA1 define U M PDIV 0 x3 define U M SDIV 0 x1 elif USB CLOCK 1 define U M MDIV 0 x48 define U M PDIV 0 x3 define U M SDIV 0 x2 elif USB CLOCK 2 Fout 48MHz define U M MDIV 0 x38 这三个值根据这三个值根据 S3C2440 芯片手册芯片手册 PLL VALUE SELECTION TABLE 部分进行设置部分进行设置 define U M PDIV 0 x2 define U M SDIV 0 x2 endif 3 vi arch arm cpu arm920t s3c24x0 speed c 根据设置的分频系数 FCLK HCLK PCLK 1 4 8 修改获取时钟频率的函数 get PLLCLK 函数修改第 66 行如下 static ulong get PLLCLK int pllreg struct s3c24x0 clock power clk power s3c24x0 get base clock power ulong r m p s if pllreg MPLL r clk power MPLLCON else if pllreg UPLL r clk power UPLLCON else hang m r p r s r if defined CONFIG S3C2440 if pllreg MPLL 参考参考 S3C2440 芯片手册上的公式 芯片手册上的公式 PLL 2 m Fin p 2s return CONFIG SYS CLK FREQ m 2 p s endif return CONFIG SYS CLK FREQ m p CLKDIVN 4 board smdk2440 lowlevel init S 还是回到 start S ifndef CONFIG SKIP LOWLEVEL INIT bl cpu init crit endif 以上代码使程序跳转到 cpu init crit 在 cpu init crit 中程序还要跳转到 lowlevel init 执行 该函数在 board smdk2440 lowlevel init S 中 用于对 SDRAM 的初始化 在该文件 中需要修改 SDRAM 的刷新参数 define B1 BWSCON DW16 这个改不改无所谓 没有接东西 define B2 BWSCON DW16 WAIT UBLB 芯片手册 P208 define B3 BWSCON DW16 define B4 BWSCON DW16 define B5 BWSCON DW8 define B6 BWSCON DW32 芯片手册 P197 define B7 BWSCON DW32 AX88796 用的是 bank2 和 smdk2410 有所区别 所以要这么改 参考 vivi define B2 Tacs 0 x0 14 13 00 为 0clock 地址建立时间 before NGCS2 define B2 Tcos 0 x3 12 11 00 为 0clock 芯片选择建立时间 before nOE define B2 Tacc 0 x7 10 8 111 为 14clock 访问周期 define B2 Tcoh 0 x1 7 6 00 为 0clock 芯片选择保持时间 after nOE define B2 Tah 0 x0 5 4 00 为 0clock 地址保持时间 after nGCSn define B2 Tacp 0 x3 3 2 00 为 2clock 页面模式存储周期 define B2 PMC 0 x0 1 0 00 为 normal 1data 页面模式配置 BANK6CON 配置 SDRAM 的参数 SDRAM 占用 BANK6 BANK6 和 BANK7 要配置成同样的值 需要查看 SDRAM 的 datasheet 当内存为 ROM 或 SRAM 时需要配置所有位 当为 SDRAM 时只要配置 0 3 这里不用修改 因为 smdk2410 也就是这样设置的 define B6 MT 0 x3 SDRAM 决定内存类型 16 15 11 SDRAM 缺省时使用 SDRAM define B6 Trcd 0 x1 3 2 01 3clock RAS to CAS delay 即 RAS 到 CAS 的延时 20ns define B6 SCAN 0 x1 9bit 1 0 01 9bit 列地址位数 即列扫描数 在 SDRAM 手册上 有一句 C0 C8 即为 9 列 BANK7CON define B7 MT 0 x3 SDRAM define B7 Trcd 0 x1 3clk define B7 SCAN 0 x1 9bit REFRESH parameter SDRAM 刷新参数 这个很重要 移植时要更改 define REFEN 0 x1 Refresh enable 默认为允许刷新默认为允许刷新 define TREFMD 0 x0 CBR CAS before RAS Auto refresh 下面三个时间参数多是根据经验来设置 define Trp 0 x0 2clk define Trc 0 x3 7clk define Tchr 0 x2 3clk define REFCNT 0 x4F4 1268period 7 8us HCLK 100Mhz 2048 1 15 6 100 SDRAM 刷新计数值 这个值比较重要 根据 SDRAM HY57V561620AT H 的 datasheet 我使 用的 这款芯片在 datasheet 写着 8192 Refresh cycle 64ms 所以一个刷新周期刷新周期为 64ms 8192 7 8125us 取 7 9 的话 REFCNT 的值就为 1259 在 ifndef CONFIG SKIP LOWLEVEL INIT bl cpu init crit 屏蔽掉 如在内存中运行 endif 后面加 点亮 LED3 ldr r0 GPBDAT ldr r1 0 x160 即 二进制 101100000 PB7 设为低电平 5 6 8 为高电平 str r1 r0 点亮开发板上的 LED3 四四 u boot 2011 03 在 TQ2440 上的移植 3 支持 norflash 启动 修改命令提示符为自己的 4 1vi include configs smdk2440 h 第 118 行修改为 define CONFIG SYS PROMPT SMDK2440 将命令行前的名字改成 SMDK2440 if 0 注释掉下面两个类型的 Nor Flash 设置 或者选 LV800 因为与本板类似 define CONFIG AMD LV400 1 uncomment this if you have a LV400 flash define CONFIG AMD LV800 1 uncomment this if you have a LV800 flash endif define CONFIG SYS MAX FLASH BANKS 1 max number of memory banks ifdef CONFIG AMD LV800 define PHYS FLASH SIZE 0 x00200000 1MB define CONFIG SYS MAX FLASH SECT 19 max number of sectors on one chip define CONFIG ENV ADDR CONFIG SYS FLASH BASE 0 x0F0000 addr of environment endif ifdef CONFIG AMD LV400 define PHYS FLASH SIZE 0 x00080000 512KB define CONFIG SYS MAX FLASH SECT 11 max number of sectors on one chip define CONFIG ENV ADDR CONFIG SYS FLASH BASE 0 x070000 addr of environment endif 第 175 行添加如下内容 define CONFIG EON 29LV160AB 1 添加添加 TQ2440 开发板开发板 Nor Flash 设置设置 define PHYS FLASH SIZE 0 x200000 我们开发板的我们开发板的 Nor Flash 是是 2M define CONFIG SYS MAX FLASH SECT 35 根据根据 EN29LV160AB 的芯片手册描述 共的芯片手册描述 共 35 个扇区个扇区 define CONFIG ENV ADDR CONFIG SYS FLASH BASE 0 x80000 暂设置环境变量的首地址为暂设置环境变量的首地址为 0 x80000 在在 256K 处放处放 uboot 参数参数 4 2 添加 Norflash 的 information vi include flash h 第 181 行添加 define EON ID LV160AB 0 x22492249 通过通过 JTAG JFLASH 可查到可查到 4 3 修改 norflash 的驱动 在 u boot 中对 Nor Flash 的操作分别有初始化 擦除和写入 所以我们主要修改与硬件密切相关的三个函数 flash init flash erase write hword vi board samsung smdk2440 flash c 由 One 8 Kword two 4 Kword one 16 Kword and thirty one 32 Kword sectors word mode 可知主要扇区大小为 32k so 修改第 31 行 define MAIN SECT SIZE 0 x8000 定义为 32k 主要扇区的大小 define MEM FLASH ADDR1 volatile u16 CONFIG SYS FLASH BASE 0 x00000555 1 define MEM FLASH ADDR2 volatile u16 CONFIG SYS FLASH BASE 0 x000002AA 1 75 行 error 改为 EON ID LV160AB 由于我们是把 norflash 连接到了 s3c2440 的 bank0 上 因此 norflash 中的地址相对于 s3c2440 来说基址为 0 x00000000 即 CONFIG SYS FLASH BASE 0 而之所以又把 norflash 中的地址向左移一位 即乘以 2 是因为我们是把 s3c2440 的 ADDR1 连接到了 norflash 的 A0 上的缘故 由数据手册可知 EN29LV160AB 第 0 扇区大小为 8K 第 1 2 为 4K 第 3 为 16K 后 面 31 扇区为 32K 前面 4 个扇区加起来刚好是主要扇区的大小 32K 所以修改 87 行 下如下 for j 0 j flash info i sector count j if j flash id break case EON MANUFACT break default printf Unknown Vendor break switch info flash id break case AMD ID LV800B break case EON ID LV160AB break default printf Unknown Chip Type n goto Done break 修改修改 int flash erase flash info t info int s first int s last if info flash id 解除前面屏蔽掉的 ifndef CONFIG SKIP LOWLEVEL INIT bl cpu init crit endif 可用 JTAG 烧到 NOR 中测试 五五 1 在 include configs smdk2440 h 头文件中定义 Nand 要用到的宏和寄存器 如下 vi include configs smdk2440 h Nand flash register and envionment variables define CONFIG S3C2440 NAND BOOT 1 define STACK BASE 0 x33F00000 define STACK SIZE 0 x8000 define oNFCONF 0 x00 define oNFCONT 0 x04 define oNFADDR 0 x0c 0 x4E00000c define oNFDATA 0 x10 0 x4E000010 define oNFCMD 0 x08 0 x4E000008 define oNFSTAT 0 x20 0 x4E000020 define oNFECC 0 x2c 0 x4E00002c 2 修改 cpu arm920t start S 这个文件 使 u boot 从 Nand Flash 启动 在上一节 中提过 u boot 默认是从 Nor Flash 启动的 修改部分如下 注释掉系统从 Norflash 启动这部分代码 if 0 ifndef CONFIG SKIP RELOCATE UBOOT relocate relocate U Boot to RAM adr r0 start r0 current position of code ldr r1 TEXT BASE test if we run from flash or RAM cmp r0 r1 don t reloc during debug beq stack setup ldr r2 armboot start ldr r3 bss start sub r2 r3 r2 r2 size of armboot add r2 r0 r2 r2 source end address copy loop ldmia r0 r3 r10 copy from source address r0 stmia r1 r3 r10 copy to target address r1 cmp r0 r2 until source end addreee r2 ble copy loop endif CONFIG SKIP RELOCATE UBOOT endif 下面添加下面添加 2440 中中 u boot 从从 Nand Flash 启动启动 ifdef CONFIG S3C2440 NAND BOOT mov r1 NAND CTL BASE 复位复位 Nand Flash ldr r2 0 12 3 8 0 4 3 2 1 1 str r2 r1 oNFCONF 设置配置寄存器的初始值 参考设置配置寄存器的初始值 参考 s3c2440 手册手册 ldr r2 r1 oNFCONF ldr r2 1 4 1 1 1 0 str r2 r1 oNFCONT 设置控制寄存器设置控制寄存器 ldr r2 r1 oNFCONT ldr r2 0 x01 RnB Clear str r2 r1 oNFSTAT ldr r2 r1 oNFSTAT mov r2 0 xff 复位复位 command strb r2 r1 oNFCMD mov r3 0 等待等待 nand1 add r3 r3 0 x1 cmp r3 0 xa blt nand1 nand2 ldr r2 r1 oNFSTAT 等待就绪等待就绪 tst r2 0 x4 beq nand2 ldr r2 r1 oNFCONT orr r2 r2 0 x02 取消片选取消片选 str r2 r1 oNFCONT get read to call C functions for nand read ldr sp DW STACK START 为为 C 代码准备堆栈代码准备堆栈 DW STACK START 定义定义 在下面在下面 mov fp 0 copy U Boot to RAM ldr r0 TEXT BASE 传递给传递给 C 代码的第一个参数 代码的第一个参数 u boot 在在 RAM 中的起始地中的起始地 址址 mov r1 0 x0 传递给传递给 C 代码的第二个参数 代码的第二个参数 Nand Flash 的起始地址的起始地址 mov r2 0 x30000 传递给传递给 C 代码的第三个参数 代码的第三个参数 u boot 的长度大小的长度大小 192k bl nand read ll 此处调用此处调用 C 代码中读代码中读 Nand 的函数 现在还没有要自己编写实的函数 现在还没有要自己编写实 现现 tst r0 0 x0 beq ok nand read bad nand read loop2 b loop2 infinite loop ok nand read 检查搬移后的数据 如果前检查搬移后的数据 如果前 4k 完全相同 表示搬移成功完全相同 表示搬移成功 mov r0 0 ldr r1 TEXT BASE mov r2 0 x1000 4 bytes 1024 4K bytes go next ldr r3 r0 4 ldr r4 r1 4 teq r3 r4 bne notmatch subs r2 r2 4 beq stack setup bne go next notmatch loop3 b loop3 infinite loop endif CONFIG S3C2440 NAND BOOT 3 在 board samsung smdk2440 目录下新建一个 nand read c 文件 在该文件中 来实现上面汇编中要调用的 nand read ll 函数 代码如下 include define BUSY 1 define NF BASE 0 x4E000000 Nand Flash 配置寄存器基地址配置寄存器基地址 define REGb x volatile unsigned char x define REGi x volatile unsigned int x define NFCONF REGi NF BASE 0 x0 通过偏移量还是得到配置寄存通过偏移量还是得到配置寄存 器基地址器基地址 define NFCONT REGi NF BASE 0 x4 通过偏移量得到控制寄存器基通过偏移量得到控制寄存器基 地址地址 define NFCMD REGb NF BASE 0 x8 通过偏移量得到指令寄存器基通过偏移量得到指令寄存器基 地址地址 define NFADDR REGb NF BASE 0 xC 通过偏移量得到地址寄存器基通过偏移量得到地址寄存器基 地址地址 define NFDATA REGb NF BASE 0 x10 通过偏移量得到数据寄存器通过偏移量得到数据寄存器 基地址基地址 define NFSTAT REGb NF BASE 0 x20 通过偏移量得到状态寄存器基通过偏移量得到状态寄存器基 地址地址 define NAND CHIP ENABLE NFCONT define NAND SECTOR SIZE 2048 define NAND BLOCK MASK NAND SECTOR SIZE 1 static void s3c2440 write addr lp unsigned int addr int i volatile unsigned char p volatile unsigned char int col page col addr page addr NAND SECTOR SIZE p col Column Address A0 A7 for i 0 i 8 Column Address A8 A11 for i 0 i 10 i p page Row Address A12 A19 for i 0 i 8 Row Address A20 A27 for i 0 i 16 Row Address A28 A29 for i 0 i 10 i low level nand read function int nand read ll unsigned char buf unsigned long start addr int size int i j if start addr 地址或长度不对齐地址或长度不对齐 NAND CHIP ENABLE 选中选中 Nand 片选片选 for i start addr i start addr size 发出发出 READ0 指令指令 NAND CLEAR RB NFCMD 0 s3c2440 write addr lp i 2k page NFCMD 0 x30 NAND DETECT RB for j 0 j NAND SECTOR SIZE j i buf NFDATA buf NAND CHIP DISABLE 取消片选信号取消片选信号 return 0 4 然后 在 board samsung smdk2440 Makefile 中添加 nand read c 的编译选 项 使他编译到 u boot 中 如下 COBJS smdk2440 o flash o nand read o 5 还有一个重要的地方要修改 在 arch arm cpu arm920t u boot lds 中 这个 u boot 启动连接脚本文件决定了 u boot 运行的入口地址 以及各个段的存储位置 这也是链接定位的作用 添加下面两行代码的主要目的是防止编译器把我们自己添加的用 于 nandboot 的子函数放到 4K 之后 否则是无法启动的 如下 text arch arm cpu arm920t start o text board samsung smdk2440 lowlevel init o text board samsung smdk2440 nand read o text text 此时可以编译烧写到 nand 中了 6 现在进入现在进入 u boot 的第二阶段 添加的第二阶段 添加 Nand Flash K9F2G08U0A 的有关操作支的有关操作支 持 持 在上一节中我们说过 通常在嵌入式 bootloader 中 有两种方式来引导启动内核 从 Nor Flash 启动和从 Nand Flash 启动 但不管是从 Nor 启动或者从 Nand 启动 进入第二 阶段以后 两者的执行流程是相同的 当 u boot 的 start S 运行到 start armboot word start armboot 时 就会调用 lib arm board c 中的 start armboot 函数 至此 u boot 正式进入第二阶段 此时注意 以前较早的 u boot 版本进入第二阶段后 对 Nand Flash 的支持有新旧两套代码 新代码 在 drivers nand 目录下 旧代码在 drivers nand legacy 目录下 CFG NAND LEGACY 宏决 定了使用哪套代码 如果定义了该宏就使用旧代码 否则使用新代码 但是现在的 u boot 2010 06 版本对 Nand 的初始化 读写实现是基于最近的 Linux 内核的 MTD 架构 删 除了以前传统的执行方法 使移植没有以前那样复杂了 实现 Nand 的操作和基本命令都直 接在 drivers mtd nand 目录下 在 doc README nand 中讲得很清楚 下面我们结合代码来 分析一下 u boot 在第二阶段的执行流程 1 lib arm board c 文件中的 start armboot 函数调用了 drivers mtd nand nand c 文件中的 nand init 函数 如下 if defined CONFIG CMD NAND 可以看到 CONFIG CMD NAND 宏决定了 Nand 的初始化 puts NAND nand init endif 2 nand init 调用了同文件下的 nand init chip 函数 3 nand init chip 函数调用 drivers mtd nand s3c2410 nand c 文件下的 board nand init 函数 然后再调用 drivers mtd nand nand base c 函数中的 nand scan 函数 4 nand scan 函数调用了同文件下的 nand scan ident 函数等 7 新建 s3c2440 nand c 文件 来实现对 Nandflash 的各种操作 touch drivers mtd nand s3c2440 nand c include if 0 define DEBUGN printf else define DEBUGN x args endif include include include define REGb x volatile unsigned char x define REGi x volatile unsigned int x define NF BASE 0 x4e000000 Nand 配置寄存器基地址 define NFCONF REGi NF BASE 0 x0 偏移后还是得到配置寄存器基地址 define NFCONT REGi NF BASE 0 x4 偏移后得到 Nand 控制寄存器基地 址 define NFCMD REGb NF BASE 0 x8 偏移后得到 Nand 指令寄存器基地 址 define NFADDR REGb NF BASE 0 xc 偏移后得到 Nand 地址寄存器基地 址 define NFDATA REGb NF BASE 0 x10 偏移后得到 Nand 数据寄存器基地 址 define NFMECCD0 REGi NF BASE 0 x14 偏移后得到 Nand 主数据区域 ECC0 寄存器基地址 define NFMECCD1 REGi NF BASE 0 x18 偏移后得到 Nand 主数据区域 ECC1 寄存器基地址 define NFSECCD REGi NF BASE 0 x1C 偏移后得到 Nand 空闲区域 ECC 寄存器基地址 define NFSTAT REGb NF BASE 0 x20 偏移后得到 Nand 状态寄存器基地 址 define NFSTAT0 REGi NF BASE 0 x24 偏移后得到 Nand ECC0 状态寄存 器基地址 define NFSTAT1 REGi NF BASE 0 x28 偏移后得到 Nand ECC1 状态寄存 器基地址 define NFMECC0 REGi NF BASE 0 x2C 偏移后得到 Nand 主数据区域 ECC0 状态寄存器基地址 define NFMECC1 REGi NF BASE 0 x30 偏移后得到 Nand 主数据区域 ECC1 状态寄存器基地址 define NFSECC REGi NF BASE 0 x34 偏移后得到 Nand 空闲区域 ECC 状 态寄存器基地址 define NFSBLK REGi NF BASE 0 x38 偏移后得到 Nand 块开始地址 define NFEBLK REGi NF BASE 0 x3c 偏移后得到 Nand 块结束地址 define S3C2440 NFCONT nCE 1 priv DEBUGN hwc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025眼镜行业市场深度挖掘及品牌定位与市场拓展研究报告
- 2025眼镜制造行业市场分析及时尚设计与科技结合研究报告
- 2025电子商务平台市场发展态势及未来增长机会研究报告
- 2025烘焙食品行业市场发展趋势与创新方向及投资风险评估报告
- 2025演唱支承行业电子商务平台运营策略资金引入商业战略规划研究报告
- 2025液晶面板显示行业现状供需分析及投资战略规划分析研究报告
- 2025年《中国成语大会》海选题库附答案
- 2025年危险源识别试题及答案
- 2025年(新)过敏性休克应急处理试题及答案
- (2025年)(完整版)环境监测试题含答案
- 常见心电图危急值及处理
- GB/T 43632-2024供应链安全管理体系供应链韧性的开发要求及使用指南
- 《光伏发电工程预可行性研究报告编制规程》(NB/T32044-2018)中文版
- 华润集团BSC6S与战略管理
- 全身性骨关节炎个案护理
- 公园养护策划方案
- 美术作品与客观世界 课件-2022-2023学年高中美术湘美版(2019)美术鉴赏
- 2023学年完整公开课版《共圆中国梦》
- 5.第五章 企业主要经济业务的核算(上)
- 高考“诗化小说”阅读考点示例与强化训练(附答案解析)
- 全国各大银行及支行联行号查询
评论
0/150
提交评论