推荐阅读最新更新时间:2024-03-16 16:15
OK6410开发板裸板烧写启动说明
参考博文“ OK6410启动分析 ”可知S3C6410在nand flash启动时硬件会自动将NANDflash中前8K的程序完整复制到S3C6410片内内存中(OK6410的nand flash一页是4K),但是这前8K并不是连续的2页内容,6410为了兼容2K页的nand flash启动时自动拷贝nand flash前4页的内容到片内内存执行,而且拷贝时只拷每页中的前2KByte,面对这样的拷贝方式,如果我们的裸机代码小于2k则可以正常运行,但是如果编译出来的.bin文件大于2K就要注意了,不能直接把逻辑代码直接一股脑写到nand flash当中,在我们前面的裸机实验当中编译出来的逻辑代码都小于2K,上电启动后可以直接在
[单片机]
OK6410分层分离(总线-驱动-设备模型)
led_dev.c源码: #include linux/module.h #include linux/moduleparam.h #include linux/ioport.h #include linux/init.h #include linux/delay.h #include linux/platform_device.h // 1. 分配一个platform_device // 2. 设置 static struct resource led_resoures = { = { .start = 0x7F008820, // GPMCON .end = 0x7F008827,
[单片机]
Exynos4412 Uboot 移植(四)—— Uboot引导内核过程分析
bootloader 要想启动内核,可以直接跳到内核的第一个指令处,即内核的起始地址,这样便可以完成内核的启动工作了。但是要想启动内核还需要满足一些条件,如下所示: 1、cpu 寄存器设置 * R0 = 0 * R1 = 机器类型 id * R2 = 启动参数在内存中的起始地址 2、cpu 模式 * 禁止所有中断 * 必须为SVC(超级用户)模式 3、Cache、MMU * 关闭 MMU * 指令Cache可以开启或者关闭 * 数据Cache必须关闭 4、设备 * DMA 设备应当停止工作 5、PC为内核的起始地址 这些需求都由 boot loader 实现
[单片机]
用uboot调试裸机C语言
昨天用uboot1.4调试了一下基于s3c44b0的一个LED灯实验,成功,纪录下: 最初的设想是想用uboot的loadb命令来调试自己移植的uboot,发现串口没显示,当时就晕了 就不想再动了,原因可想而知是各种各样的,难~~~ 但再想想是不是思路有问题,就打算写个裸C来试下loadb命令。 整个程序就是实现个流水灯(也就只有三个LED ),就叫做led.c吧,编译成led.o,再用arm-elf-objcopy成led.bin,通过串口,用uboot命令loadb 0x0c008000 用超级终端传送一下,(很快,一下而过)发现板子没反应,(又晕了 )只有找google了(还是推荐google,百度还是差点)发现还要
[单片机]
Jlink 烧写Uboot
第一章 Hi3531_SDK_Vx.x.x.x版本升级操作说明 如果您是首次安装本SDK,请直接参看第2章。 第二章首次安装SDK 1、Hi3531 SDK包位置 在 Hi3531_V100R001***/01.software/board 目录下,您可以看到一个Hi3531_SDK_Vx.x.x.x.tgz 的文件, 该文件就是Hi3531的软件开发包。 2、解压缩SDK包 在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3531_SDK_Vx.x.x.x.tgz , 解压缩该文件,可以得到一个Hi3531_SDK_Vx.x.x.x目录
[单片机]
OK6410开发板uboot烧写
uboot的移植完成以后,满以为很快能烧写到板子上并安装linux,结果uboot烧写了三天才终于成功,这其中碰到了不少的问题,在此做个总结。 首先,飞凌的OK6410开发板并不支持JLink烧写uboot,只能通过SD卡来烧写,这一点我事先并不知道,他们网店介绍里并未说明,而且销售人员也没有做出任何提示,结果我花了整整一天时间尝试所有通过JLink烧写uboot的可能方法,结合网上个别人反映,最终意识到通过JLink完成uboot烧写是不可能成功的了,后来在销售人员那里确认了这一点,对飞凌表示不满。 当时买板的时候没有买SD卡,因为感觉没什么用,就想给老板省点钱,现在没SD卡不行了,但在寻找JLink烧写uboot方法的过程中
[单片机]
cortex-a8 uboot系列:第十三章 uboot命令体系
一、uboot命令实现代码 Uboot命令体系的实现代码在common/cmd_xxx.c中。有若干个.c文件和命令体系有关。(还有command.c main.c) 每个命令对应一个函数 每一个uboot的命令背后都对应一个函数。这就是uboot实现命令体系的一种思路和方法。 命令参数以argc&argv传给函数 有些uboot的命令还支持传递参数。也就是命令对应的函数接收的参数列表中有argc和argv,然后命令体系会把执行执行命令时的命令+参数(如md 0x30000000 10)以argc(3)和argv(argv =”md” argv =”0x30000000” argv =”10”)的方式传递给执行命令的函数
[单片机]
ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析
ARM汇编有ldr指令以及ldr、adr伪指令,它们都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。 ldr r0, _start adr r0, _start ldr r0, =_start _start: b _start 编译的时候设置 RO 为 0x30000000,下面是反汇编的结果: 0x00000000: e59f0004 ldr r0, ; 0xc 0x00000004: e28f0000 add r0, pc, #0 ; 0x0 0x00000008: e59f0000 ldr r0, ; 0x10 0x0000000c: eaf
[单片机]