ARM裸板开发配置流程一

ARM裸板开发中:
能不能开发板一上电就运行c语言程序?
答:不能,ATPCS(arm和thumb程序调用规范)默认使用了ARM中的资


源,而一上电ARM的资源还没有初始化好!
【解决方法:】在bootloader中的boot阶段中初始化好ATPCS用到了


的资源。(bootloader = boot + loader)
ATPCS中默认使用了ARM中的资源:
1、R0-R3(给函数传参,register中只能使用这是个寄存器,当输入参数超过4个的时候,必须借助栈空间来传递), R0(函数的返回值)  ----> 初始化,没有必要  (不关心)
2、自动保护r4-r12----> 压栈处理  ---->  stmfd sp!,{r4-r12}  ----> 必须初始化SP,让其指向合法地址




boots阶段做的事情:


1、关闭看门狗、中断(使能cache)
2、初始化SOC的时钟控制器
3、初始化DRAM的选项,例如刷新周期...
4、初始化不同模式下SP的值,它的值的特点,高地址,而且这个地址必须指向可读可写的地方(内存)
5、结果:正常跳转到main函数
------------------------------------------------
内存 : RAM
静态 SRAM 有电压,就可以工作(网卡)
动态 DRAM   动态刷新才能工作(内存条)
-------------------------------------------------


硬件打交道:
unsigned int *p = addr; //找地址
p[x] = data; //赋值


ldr r1,=addr
ldr r0,=data
str r0,[r1]
----------------------------------------------------
片内资源  === SFR   ---》定位到具体控制器的描述中,找芯片用户手册中 REGISTER DESCRIPTION
CPU : 寄存器  r0-r15
控制器: 寄存器  有地址的
片外资源:


1、看门狗是一个控制器,关闭它,就是关闭这个控制器
addr : 地址,描述这个控制器的资源 0xEA20_0000
x :  范围 0
data :  看芯片手册中具体描述,如果只是关闭,0x0这个二进制集合,满足要求


2、初始化时钟
时钟 === 频率  (超频)一般CPU厂商都有参考值
clk :  时钟频率
pll :  锁相环,倍频,锁频
y = f(a,b,c,fin);
y : 输出频率 fin :输入频率 a,b,c : 倍频系数
HCLK : 高速时钟   PCLK:慢速时钟

fin  ---->  pll  -----> fout  ----> DIV -----> armclk
12M |
|----DIV----> HCLK
|
|----DIV---> PCLK
S5PC100 : 包含3个bus,每一个bus管理了哪些控制器
WDT : PCLK (慢速时钟) 
常用寄存器:
APLL_MASK  :  屏蔽寄存器 锁定时间寄存器
APLL_CON   :  控制寄存器 锁相环系数配置寄存器
CLK_SRC    :  时钟选择寄存器
CLK_DIV   :  时钟分频寄存器


3、内存初始化

4、初始化SP的值
指向内存,保证不要指向了代码区,不要覆盖其他段。
确定内存的首地址:
0x2000 0000
内存大小:
256MB  ------>  2^28   0x1000 0000

0x20008000 

usr  svc  irq
5、bl main

点灯:
LED 
unsigned int *p = addr;
p[x] = data;

1、先找到外围设备,判断该设备是片内资源,片外资源
怎么判断,就看该设备,是否有地址总线
2、通用IO口
只有1或者0这2中状态的情况下,对应的寄存器:
配置/选择 寄存器 数据寄存器
复用的思想:

第一步操作,配置功能,再根据功能进行控制器的配置

GPIO:
【设置多个位】
先读,清零,置位,回写
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值