start.S解析4
2016-04-22 10:29
225 查看
《朱老师物联网大讲堂》学习笔记
学习地址:www.zhulaoshi.org
bl lowlevel_init /* go setup pll,mux,memory */这句是start.S中的代码,要说的一点是,这里通过SI直接找到的定义处,是有问题的,
push {lr}压栈,保存环境,
/* check reset status */
ldr r0, =(ELFIN_CLOCK_POWER_BASE+RST_STAT_OFFSET)
ldr r1, [r0]
bic r1, r1, #0xfff6ffff
cmp r1, #0x10000
beq wakeup_reset_pre
cmp r1, #0x80000
beq wakeup_reset_from_didle判断复位状态,虽然这对我们这里没什么意义,不过它的作用还是不能忽视的,
复位状态不仅仅是一种,比如有冷上电,热启动,睡眠下唤醒等,这些都属于复位,
意义在于,比如冷上电的时候DDR是需要初始化的,
看来真的是不同啊~
/* IO Retention release */
ldr r0, =(ELFIN_CLOCK_POWER_BASE + OTHERS_OFFSET)
ldr r1, [r0]
ldr r2, =IO_RET_REL
orr r1, r1, r2
str r1, [r0]IO状态恢复,暂时不用管,
/* Disable Watchdog */
ldr r0, =ELFIN_WATCHDOG_BASE /* 0xE2700000 */
mov r1, #0
str r1, [r0]关看门狗,哈哈,用到以前讲的了,
接下来的代码,是外部SRAM,SROM的GPIO的设置,懒得贴了,暂时也不用管。
还有供电锁存,都是之前裸机中有讲的,
学习地址:www.zhulaoshi.org
bl lowlevel_init /* go setup pll,mux,memory */这句是start.S中的代码,要说的一点是,这里通过SI直接找到的定义处,是有问题的,
push {lr}压栈,保存环境,
/* check reset status */
ldr r0, =(ELFIN_CLOCK_POWER_BASE+RST_STAT_OFFSET)
ldr r1, [r0]
bic r1, r1, #0xfff6ffff
cmp r1, #0x10000
beq wakeup_reset_pre
cmp r1, #0x80000
beq wakeup_reset_from_didle判断复位状态,虽然这对我们这里没什么意义,不过它的作用还是不能忽视的,
复位状态不仅仅是一种,比如有冷上电,热启动,睡眠下唤醒等,这些都属于复位,
意义在于,比如冷上电的时候DDR是需要初始化的,
看来真的是不同啊~
/* IO Retention release */
ldr r0, =(ELFIN_CLOCK_POWER_BASE + OTHERS_OFFSET)
ldr r1, [r0]
ldr r2, =IO_RET_REL
orr r1, r1, r2
str r1, [r0]IO状态恢复,暂时不用管,
/* Disable Watchdog */
ldr r0, =ELFIN_WATCHDOG_BASE /* 0xE2700000 */
mov r1, #0
str r1, [r0]关看门狗,哈哈,用到以前讲的了,
接下来的代码,是外部SRAM,SROM的GPIO的设置,懒得贴了,暂时也不用管。
还有供电锁存,都是之前裸机中有讲的,
相关文章推荐
- 我的 ARM+Linux 学习路线
- 开发学习记录之看门狗驱动
- 时钟+温度+遥控设置,综合时钟例子
- Linux下运行openwebos- -(转)
- Linux下运行openwebos- -(转)
- BusyBox 简化嵌入式 Linux 系统
- EGL 学习
- 嵌入式开发设计方法变化的背景
- 嵌入式人才的发展方向
- 汇编调用c函数为什么要设置栈
- 三角函数的实现
- 嵌入式桌面操作系统使用与制作攻略
- 嵌入式系统烧写uboot/bootloader/kernel的一般方法
- 甲骨文收购Sleepycat 丰富嵌入式产品线
- 嵌入式Linux操作系统学习规划
- 基于嵌入式多芯片模组的微机保护平台
- 嵌入式系统中常用文件系统的制作总结
- 嵌入式C语言基础教程一
- 汇总Dotfuscator自定义规则中的元素选择
- 3. 类型限定符