历史上的今天
今天是:2025年03月10日(星期一)
2020年03月10日 | ARM裸板开发配置流程一
2020-03-10 来源:eefocus
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:
【设置多个位】
先读,清零,置位,回写
史海拾趣
|
第一讲:开发板和软件的操作使用 1、 介绍配件。 2、 安装软件(ICC AVR 和AVR STUDIO)及其使用,包括新建工程、程序下载,仿真调试;整板测试;板上资源。 3、 着重介绍一下USB接口的仿真器。 第二讲:AVR单片机的概述和C语言的基础知识 ...… 查看全部问答> |
|
小弟刚刚接触研发,还没入门,我在用单片机(stc89c58)的IO口驱动继电器时,想让单片机上电后就使IO口输出高电平,希望继电器有动作,结果就是没有动作。后来发现必须先置低IO口后再输出高电平才能得到自己想要的效果,到现在我也不明白什么为什么 ...… 查看全部问答> |
|
DS2-电力载波通讯PLC 什么是电力载波通讯PLC技术? 电力载波通讯PLC(英文:Power line communication)是电力系统特有的通信方式,电力载波通讯是指利用现有电力线,通过载波方式将模拟或数字信号进行高速传输的技术。最大特点是不需要重 ...… 查看全部问答> |
|
1 引言 基于FPGA的数字系统设计中大都推荐采用同步时序的设计,也就是单时钟系统。但是实际的工程中,纯粹单时钟系统设计的情况很少,特别是设计模块与外围芯片的通信中,跨时钟域的情况经常不可避免。如果对跨时钟域带来的亚稳态、 ...… 查看全部问答> |
|
最近要在原来的板子上添加3G模块,用的是中兴的MC8630,但该模块的AT指令是通过串口来发送接收的,而相关的数据信息是通过USB来进行的 如此一来,我们是这样设想的:在原来的板子上模拟一个虚拟串口来接收上层的AT指令,然后该虚拟串口再把接收到的指令 ...… 查看全部问答> |
|
小弟最近在用mfc编程。用常规定时器定时接收串口中的数据,但是当我点击界面中其它按钮的时候,接收到的串口数据有丢失现象。请问可不可以把常规定时器的优先级设高一些,让其它如鼠标消息的优先级设低一些,从而使接收数据不丢失。 … 查看全部问答> |




