今天无竟中发现u-boot中还有一个examples目录,编译u-boot之后发现了好几个测试程序,如hello_world 。
同时tq2440的bootloader中有选项可以下载程序sdram中并运行,
[7] Download Program (uCOS-II or TQ2440_Test) to SDRAM and Run it。
这样如果hello_world可以直接在sdram中并跑起来的话,就省得每一次都要烧到nand flash中去了。
1. u-boot编译时,修改 ./example/Makefile
ifeq ($(ARCH),arm)
#LOAD_ADDR = 0xc100000
LOAD_ADDR = 0x30000000
endif
原先的LOAD_ADDR=0xc100000没有在内存中所以程序跑不起来,修改LOAD_ADDR到内存的起始地址0x30000000.
2. 同时在烧写时也要修改下载的地址
假设在windows下用dnw烧写,则需要设置Options—>Download Address 0x30000000, 下载的地址要和连接时的地址保持一致才能运行。
3. 程序运行打印信息如下:
Enter your selection: 7
USB host is connected. Waiting a download.
Now, Downloading [ADDRESS:30000000h,TOTAL:533]
RECEIVED FILE SIZE: 533 (0KB/S, 1S)
## Starting application at 0x30000000 ...
Example expects ABI version 3
Actual U-Boot ABI version 3
Hello World
argc = 1
argv[0] = "30000000"
argv[1] = ""
Hit any key to exit ...
## Application terminated, rc = 0x0
关键字:TQ2440 uboot U-boot目录
引用地址:
TQ2440之uboot---6.运行U-boot目录examples中的hello_world.c
推荐阅读最新更新时间:2024-03-16 16:00
TQ2440 学习笔记—— 24、IIC 接口
IIC 接口 IIC (Inter-Integrated Circuit)总线是一种由PHILIPS 公司开发的串行总线,用于连接微控制器及其外围设备,它具有如下特点: 1、只有两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL)。 2、每个连接到总线的器件都可以使用软件根据它的唯一的地址来识别。 3、传输数据的设备间是简单的主从关系。 4、主机可以用主机发送器或主机接收器。 5、它是一个真正的多主机总线,两个或多个主机同时发起数据传输时,可以通过冲突检验和仲裁来防止数据被破坏。 6、串行的 8 位双向数据传输,位速率在标准模式下可达100 kbit/s,在快速模式下可达 400 kbit/
[单片机]
TQ2440 学习笔记—— 22、系统时钟和定时器
系统时钟和定时器 启动MPLL 需要设置的寄存器: LOCKTIME (LOCK TIME COUNT)、MPLLCON(Main PLL Control)、CLKDIVN(clock divider control) 若Fout = 200MHz则, Fout = 2 *m * Fin / (p * 2 ^ s) = 2 * (92 + 8) * 12MHz / (3 * 2 ^ 2) = 200MHz m = 100, MDIV = 92 p = 3, PDIV = 2 s = 2, SDIV = 2 #define S3C2440_MPLL_200MHZ ((0x5c 12) | (0
[单片机]
TQ2440裸奔程序:串口UART的PC机按键测试程序
//========================================= // NAME: main.c // DESC: TQ2440串口UART测试程序 //========================================= #include def.h #include option.h #include 2440addr.h #include #include #include #include #include //======================================
[单片机]
OK6410开发板uboot烧写
uboot的移植完成以后,满以为很快能烧写到板子上并安装linux,结果uboot烧写了三天才终于成功,这其中碰到了不少的问题,在此做个总结。 首先,飞凌的OK6410开发板并不支持JLink烧写uboot,只能通过SD卡来烧写,这一点我事先并不知道,他们网店介绍里并未说明,而且销售人员也没有做出任何提示,结果我花了整整一天时间尝试所有通过JLink烧写uboot的可能方法,结合网上个别人反映,最终意识到通过JLink完成uboot烧写是不可能成功的了,后来在销售人员那里确认了这一点,对飞凌表示不满。 当时买板的时候没有买SD卡,因为感觉没什么用,就想给老板省点钱,现在没SD卡不行了,但在寻找JLink烧写uboot方法的过程中我
[单片机]
uboot之relocate代码的深入理解
在读网络原理时,发现Dave Clark说的一句话 我们拒绝国王,总统和选举。我们信奉的是是大体的一致意见和正在执行的代码 在读linux0.11内核时,发现linus说的一句话, 要了解系统真正的运行机制,一切尽在源代码中 。 在读众多的关于uboot移植的文档如,大家却在说 第一阶段~~~~第二阶段~~~~~ , 这一段完成~~~~ 却很少见到讲解过start_armboot()函数是怎么实现的,只是笼统的说完成神马神马的初始化~~ 在今天之前看了那么多文档,发现自己对uboot说的是头头是道, 第一阶段~~第二阶段~~ ,然后移植到自己板子上,则是两眼一摸黑,神马都不知道~~~ 然而就是今天,就在
[单片机]
TQ2440 使用Jlink-Flasher 烧写 u-boot 或者 program
目前有三种方式来烧写 1、使用SJF2440 软件,配合 PC并口,这种方法最原始,效率低下,并且PC 必须有并口,现在的电脑一般都没有,笔记本就更加不用说啦! 2、使用H-Jtag 软件,配合PC并口,对于有PC 并口的,可以推荐下,但是一般都是没有的! 3、使用Jlink 软件,PC 端没有并口,我们一般都采用这种方法,特别是笔记本电脑。 TQ2440 买回来的时候是有u-boot 的,此后我们可以选择是从Nor Flash 启动或者 NAND Flash 启动,并且可以通过 USB 烧写。但如果一旦 u-boot 损坏了,或者其他原因,就会导致不能下在程序。我就遇到了这样的问题! 买了个 J-Link A
[单片机]
TQ2440 学习笔记—— 11、嵌入式编程基础知识【arm-linux-objcopy、objdump选项】
1、arm-linux-objcopy 选项 arm-linux-objcopy 被用来复制一个目标文件的内容到另一个文件中,可以使用不同于源文件的格式来输出目的文件,即可以进行格式转换。 常用arm-linux-objcopy 来将ELF格式的可执行文件转换为二进制文件。 arm-linux-objcopy 的使用格式如下: 2、arm-linux-objdump 选项 arm-linux-objdump 用于显示二进制文件信息,常用来查看反汇编代码 使用格式如下:
[单片机]
S3C6410使用---10为SD卡与NAND FLASH的uboot加上menu菜单
用ok6410进行烧写时,每次都需要敲一大堆命令,又费时又费力. 记得以前用TQ2440时,u-boot启动时会有一个菜单,只按一个数字键就把内核烧好了,非常方便. 现在这张SD卡功能就很全面了,不仅能够直接从SD卡启动,而且还可以烧写nand flash中的u-boot zImage rootfs,呵呵. 下面就把这个功能加到ok6410的u-boot 中去. 一、修改SD卡的u-boot1.1.6 1. common/main.c中 void main_loop (void) { ....... if (bootdelay = 0 && s && !abortboot (bootdelay)) {
[单片机]