OK6410烧写裸机程序到nandflash,不使用jlink,支持大文件烧写
来源:互联网 发布:淘宝有趣的小玩意 编辑:程序博客网 时间:2024/05/19 03:46
初学嵌入式我是从裸机程序开始的,刚学的时候也怎么也不知道将裸机程序在开发板上面运行。网上其实有很多办法,但是我测试过都是在UBOOT的基础上用DNW或者jlink等工具拷贝到内存中去运行,重启开发板后就失效了,而且UBOOT会对开发板的运行环境初始化,这样的运行环境,和我们把程序烧写到nandflash里去运行是不一样的。如:uboot会对CPU时钟初始化,让cpu运行在532mhz下(或者其他的频率),而从nandflash运行程序我们一般都没有初始化CPU时钟,则CPU靠外部晶振提供时钟,我们的OK6410开发板的外部晶振是12Mhz(XTO,XTI引脚),差别之大则体现在运行速度上面。
下面我们介绍怎么将我们写好的bin文件烧写到nandflash的前8KB中去,当开发板启动后,它会直接拷贝nandflash的前8K到sram中运行。
先上程序
c程序:
//led.c 一个简单的循环点灯程序#define rGPMCON (*(volatile unsigned *)(0x7F008820))#define rGPMDAT (*(volatile unsigned *)(0x7F008824))#define rGPMPUD (*(volatile unsigned *)(0x7F008828))void msDelay(int time){volatile unsigned int i,j;for(i = 0; i < 20000; i++)for(j=0; j<time; j++);}void GPIO_Init(void){rGPMCON = 0x11111;rGPMPUD = 0x00;rGPMDAT = 0X1F;}void LedTest(void){volatile unsigned int i;while (1){for(i=0; i<4; i++){rGPMDAT = ~(1<<i);msDelay(10);}}}void main(void){GPIO_Init();LedTest();}
汇编程序:
.globl _start_start:/*硬件相关设置*/ /* Peri port setup */ ldr r0, =0x70000000 orr r0, r0, #0x13 mcr p15,0,r0,c15,c2,4 @ 256M(0x70000000-0x7fffffff) /*关看门狗*/ldr r0, =0x7E004000mov r1, #0str r1, [r0]/* 设置C程序运行的栈*/ldr sp, =8*1024bl mainhalt:b halt
Makefile:
led.bin: start.o led.oarm-linux-ld -Ttext 0 -o led.elf start.o led.oarm-linux-objcopy -O binary led.elf led.binarm-linux-objdump -D led.elf > led.disstart.o : start.Sarm-linux-gcc -o start.o start.S -c -O2led.o : led.carm-linux-gcc -o led.o led.c -c -O2clean:rm *.o led.elf led.bin led.dis
将上述3个文件放在Linux上面编译生成led.bin,然后将led.bin拷贝到windows目录下。
我们假设你的OK6410什么程序都没有(开机没有任何反应)。
我们将三个线连接到开发板上面:
1,开发板电源线
2,USB转串口线:一端连接电脑USB口,一端连接开发板。
3,USB device线:一端连接电脑USB口,一端连接开发板。(就是开发板上面的小USB口,dnw下载程序用,请根据飞凌的资料安装好驱动程序)
硬件连接完毕,现在介绍烧写步骤。
烧写原理:用Linux的UBOOT命令 nand 烧写程序到开发板。
1,通过SD_Writer.exe将mmc.bin烧写到SD 卡中 ,将开发板设置到SD卡启动。(具体方法参见飞凌开发板linux3.0.1用户手册.pdf)
2,将SD卡安装到开发板中并启动,快速敲空格键让开发板停留在uboot的启动画面,如下图所示。
3,输入dnw 50008000 下载你要烧写的程序,如图:
然后从dnw的usbport->Transmit->Transmit发送你要生成的led.bin文件。如下图
4,输入 nand erase 0 100000 擦除nandflash前1Mb空间。
5,输入 nand write.uboot 50008000 0 100000 将内存地址50008000中的1Mb数据写到nandflash的0~100000空间中。(即前1Mb中,uboot中输入的数据默认16进制)
6,将开发板设置到nandflash启动,并启动开发板,你就可以看到4盏LED灯在循环亮。
因水平有限,如果有什么错误请各位网友指出,我看到一定会更正。
---------------------------------------------------------------------------
2012/08/08修改说明:由于OK6410采用的是每页4KB的nandflash,而CPU默认支持最大2KB每页的nandflash,而造成第一种方法烧写超过2KB,则方法失效,这是第二种方法,可以很好的兼容大的bin文件。
- OK6410烧写裸机程序到nandflash,不使用jlink,支持大文件烧写
- OK6410烧写裸机程序到nandflash(改)
- Jlink 烧写文件到 nandflash norflash
- ok6410 SD卡烧写裸机程序(支持大文件烧写)
- OK6410 烧写裸机程序到 nand flash
- 无jlink的裸机烧写程序
- mini2440烧写裸机程序(MDK+Jlink)
- mini2440烧写裸机程序(linux+JLink)
- 如何使用J-Link V8 烧写程序到NandFlash
- s3c2440裸机烧写flash-jlink
- 使用JLink烧写bin文件到Mini2440
- 使用JLink烧写bin文件到S3c2440
- 使用JLINK烧写HEX文件到STM32
- ok6410裸机开发_裸机编程_烧写工具
- 使用MiniTools烧写裸机程序
- OK6410利用NandFlash烧写代码的方法
- 使用jlink烧写HI3518
- 使用jlink烧写uboot
- 0704MFC
- hibernate 增删改查和一点hql
- Code Review中的几个提示
- exFAT 文件系统格式
- ios程序设计
- OK6410烧写裸机程序到nandflash,不使用jlink,支持大文件烧写
- C程序的编译过程
- 度量单位和网格 - Metrics and Grids
- 字节对齐
- win7 telnet打开
- Android HAL实例解析 .
- Android六大优势
- 百度面试
- 安卓笔记