• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
yingtaoqqq
博客园    首页    新随笔    联系   管理    订阅  订阅
期末考试大纲

![image.webp]]![4f14d6e4724f9986d4e9f7e12f3a93d1-1.webp]]![image-2.webp]]![[image-4.webp]

1 Makefile语法

目标(target):依赖(dependencies)
规则(command)(编译器需要执行的命令)

***文件符号
$@:目标文件
$^:所有依赖文件
$<:依赖文件的第一个
$?:依赖中所有改变过的文件

app: main.o utils.o
    gcc -o $@ $^   # 目标文件$@ = "app", 所有依赖文件$^ = "main.o utils.o" 第一个依赖文件$< = "main.o"

***具体例子

210.bin: start.o key.o

    arm-linux-ld -Ttext 0xd0020010 -o key.elf $^
    //将所有依赖文件链接为key.elf,并指定代码段的链接地址为0xd0020010

    arm-linux-objcopy -O binary key.elf key.bin
	//将key.elf转为key.bin文件
	
    arm-linux-objdump -D key.elf > key.dis
    //将可执行文件.elf反汇编为.dis汇编代码
    

arm-linux-ld -Ttext 0xd0020010 -o key.elf $^
链接所有依赖文件,并将合并后的代码段起始地址设为0xd0020010,将链接结果保存为key.elf(.elfwenjian )

​​arm-linux-ld​​:ARM平台的链接器,负责合并目标文件并分配内存地址
-Ttext 0xd0020010:指定整个代码段的链接地址(即运行时地址)

arm-linux-objcopy -O binary key.elf key.bin
将key.elf文件转为key.bin文件

arm-linux-objdump -D key.elf > key.dis
将可执行文件.elf反编译为人类看得懂的.dis汇编代码

key.o:  key.c

    arm-linux-gcc -nostdlib -c $< -o $@
    //将key.c通过交叉编译为key.o目标文件

arm-linux-gcc:ARM平台的交叉编译器,专门为linux嵌入式设计
-nostdlib:禁止链接标准库,使用于裸机程序
-c:仅执行预处理.i,编译.s ,汇编.o, 不进行链接,生成目标文件.o但不是可执行文件
-o $@:指定为目标文件的名字

start.o:start.S

    arm-linux-gcc -nostdlib -c $< -o $@
    //将start.S交叉编译生成start.o文件
clean:

    rm *.o *.elf *.bin *.dis
    //清除编译过程中生成的所有中间文件和输出文件
%.o : %.c
	arm-linux-gcc -c $< -o $@ -nostdlib
	//将所有以.c结尾的依赖文件文件交叉编译为.o目标文件  禁止链接标准库

2 三个问题挑一个

(1)系统时钟配置流程(p89页)

锁定 PMS,选源分频

  1. 设置xPLL锁定值,对应xPLL_LOCK 寄存器
  2. 设置xPLL的PMS值,并使能xPLL,对应寄存器是xPLL_CON
  3. 等待PLL锁定(即xPLL输出稳定的频率),对应寄存器xPLL_CON,读取其LOCKED位来判断
  4. 配置系统时钟源,选择 xPLL 作为时钟源(之前是由外部晶振提供),CLK_SRCO;
  5. 配置其他模块的时钟源,对应寄存器CLK_SRC1~CLK_SRC6
  6. 配置系统时钟分频值,对应寄存器CLK_DIVO
  7. 配置其他模块的时钟分频值,CLK_DIV1~CLK_DIV7
(2)s5pv210的外部介质的启动流程(p53页)
  1. S5PV210上电后执行iROM中的固化代码,即BL0
  2. iROM继续执行加载Bootloader到片内SRAM,即BL1,并跳到BL1中执行。
  3. 执行BL1加载Bootloader剩余部分到SRAM中,即BL2,并跳到BL2中执行。
  4. 执行BL2初始化DRAM控制器,并加载OS到SDRAM。
  5. 跳转到OS起始地址处执行
(3)dnw下载的软硬件流程
  1. 安装USB驱动

将实验箱中的拨码开关 2 拨到 on,长按 Power 键直至电脑提示安装驱动。打开设备管理器,右键外部设备更新驱动程序,手动添加USB驱动程序路径。在驱动安装过程中,将拨码开关 2 重新置为OFF 状态,然后关闭开发板的电源, 等待驱动安装完毕。

  1. USB device线连接电脑和开发板,设置开发板为 nandflash 启动(拨码开关全部拨 至OFF状态)。
  2. 打开DNW.exe。设置串口:波特率 为 115200, USB Port 为 Download,Address 为 0xd0020010。
  3. 菜单栏开启 DNW 串口连接(Serial Port ->Connect)。启动开发板后立即在 DNW 窗口迅速敲击空格键进入 Uboot 状态。
  4. DNW 窗口中输入“dnw 0xd0020010”设置下载地址
  5. DNW 菜单中,选择 usbport->Transmit->Transmit 发送生成的 210.bin 文件,DNW 自动下载 210.bin 文件至开发板。
  6. 在DNW 输入“go 0xd0020010”,开始运行210.bin 程序。

3.1 引脚赋值

3.2 AD填空写代码

![image.png]]

![image-3.png]]
![image-6.png]]
对寄存器进行赋值,完成某个任务 送分题

TSADCCON是ADC控制寄存器
TSCON是触摸屏控制寄存器
TSDATX,TSDATY分别是X,Y坐标

代码:
![image-4.png]]
![image-5.png]]
注意:
1.PCLK / (分频系数+1)次才是3.3M
2.启动一次AD转换一定是0号位,此时1号位就不能enable,所以在设置0号位=1后需要轮询等待1号位清零。
3.需要轮询等待AD转换完成,这里看ECFLG while(!(tsADCcon & (1<<15)))

3.3 串口的波特率计算

UBRDIV = (PCLK/(16×bps))-1
UDIVSLOT = (所有小数部分)✖16
最后都是整数,向下取整
![image-12.png]]

3.4 PCLK初始化

![image-7.png]]

![image-8.png]]
![image-10.png]]
![image-11.png]]

重点必背

3.5 串口操作的应用

初始化:
1.通过GPA0_0和GPA0_1设置UART的接收和发送功能
2.设置时钟源和UART工作方式【使用UCON】
3.设置波特率(UBRDIV = (PCLK/(16*bps))-1,UDIVSOLTE = F(小数部分✖16))
4.设置数据传输格式ULCON
5.UFIFO模式=0
功能层:
6.发送和接收的数据分别放在UTXH和URXH 状态存放在USTRSTAT

3.6 定时器和中断应用

定时器初始化:
1.设置预分频系数TCFG0(time0单独一个占8位),TCFG1分频值(每个定时器四位,都在TCFG1里设置)
2.设置定时器功能 TCON(每个定时器都在里面,看对应引脚设置)打开、手动更新、反转、自动更新
3.设置计数值和占空比 TCNTBx = 63162,TCMPBx(每一个定时器都分别有一个x=0,1,2,3,4)
4.手动更新位置1 再置0

中断控制器初始化:
1.设置中断类型 VIC0INTSELECT 0是IRQ模式 (每个中断占一位)
2.清中断地址 VIC0ADDRESS = 0
3.设置中断程序地址 VIC0VECTADDRx(x=0,1,2,3)
4.使能中断VIC0INTENABLE
5.可能有定时器使能中断 TINT_CSTAT (0-4位)

清中断位:
1.VIC0ADDRESS = 0
2.定时器清中断还在TINT_CSTAT(5-9位)
3.EXT_INT_PEND

按键中断时需要的按键初始化:
1.设置按键_CON为中断模式GPH0CON
2.设置外部中断(上升沿或者下降沿)EXT_INT_0_CON
3.EXT_INT_MASK 取消屏蔽(设置为0位)

读取中断状况用VIC0IRQSTATUS

常用引脚功能

TCON

![image-13.png]]

GPH0CON 可对应外部中断

![image-14.png]]

EXT_INT_0_CON

![image-16.png]]

GPD0CON 可对应定时器输出的TOUT

![image-17.png]]

TCFG0

![image-18.png]]

TCFG1

![image-19.png]]

posted on 2025-06-16 22:35  yingtaoqqq  阅读(13)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3