嵌入式课件代码armarm 1404 11.docx
- 文档编号:26412391
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:12
- 大小:471.05KB
嵌入式课件代码armarm 1404 11.docx
《嵌入式课件代码armarm 1404 11.docx》由会员分享,可在线阅读,更多相关《嵌入式课件代码armarm 1404 11.docx(12页珍藏版)》请在冰豆网上搜索。
嵌入式课件代码armarm140411
u-boot.bin烧写NandFlash的0地址。
板子一上电,IROM判断拨码开关,NandFlash,就会NandFlash去读u-boot.bin来执行。
u-boot.bin引导程序,实际上也有初始化SDRAM控制器的代码。
Tarena#
命令行模式
S5pv210处理器
ARMcortex-A8ARM公司设计
三星公司
RTC
PLL
看门狗
PWM
音频接口
USB(4个host1个OTG)
UART4个串口
IIC总线
SPI总线
GPIO(简单)
SD
ATA
多媒体接口
内存控制器(外接内存1G,上电,不能用,需要初始化内存控制器)
NandFlash控制器
64KBiROM(三星固化好一段启动代码)
96KBiRAM(上电,就可以下载程序运行)
S5pv21032位处理器4G寻址空间0x00000000---0xFFFFFFFF地址范围
1.0x20000000----0x7FFFFFFF(1.5G)该段地址用于外接内存的地址空间
TPAD只外接1G内存,最大支持1.5G
2.IROM0xD0000000
IRAM0xD0020000
被硬件映射到0x00000000,系统一上电,默认到0地址执行,IROM执行
3.SFR0xE0000000---0xFFFFFFFF
GPIO:
外设接口中最简单的一种接口,通用的IO口,IO是输入输出,可以通过编程控制GPIO管脚输出高电平或者低电平,也可以输入高低电平。
CPU管脚复用
GPIO:
237个
分组管理,每组的GPIO管脚的个数是不定的。
首先确定GPC1_3管脚在哪一组?
GPC1组:
一共有5个管脚
GPC1_0
GPC1_1
GPC1_2
GPC1_3
GPC1_4
GPC1CON32位int
32位
通过配置GPC1CON寄存器的bit[15:
12]来确定GPC1_3管脚的功能,为输出功能,给硬件原理图中的三极管输出高低电平。
如何输出高低电平呢?
GPC1DAT寄存器数据寄存器
GPC1PUD上下拉电阻寄存器
集成在s5pv210芯片里面
禁用上下拉电阻
上下拉电阻?
硬件原理图:
上拉电阻:
若按键按下:
则XEINT0管脚是低电平(接地)
若按键抬起:
则XEINT0管脚是高电平(接上拉电阻,接电源)
在这种情况下,只要XEINT0管脚判断为低电平,就可以断定,按键被按下。
无上拉电阻:
若按键按下:
则XEINT0管脚是低电平(接地)
若按键抬起:
由于XEINT0管脚悬空,状态是不确定,可能是高电平,也可能是低电平,不能以低电平来断定就一定是按键被按下。
因此,上拉电阻保证了按键没有被按下时,该管脚有一个确定的唯一的电平状态,高电平。
下拉电阻:
若按键按下:
则XEINT0管脚是高电平(接电源)
若按键抬起:
则XEINT0管脚是低电平(接地)
在这种情况下,只要XEINT0管脚判断为高电平,就可以断定,按键被按下。
无下拉电阻:
若按键按下:
则XEINT0管脚是高电平(接电源)
若按键抬起:
由于XEINT0管脚悬空,状态是不确定,可能是高电平,也可能是低电平,不能以高电平来断定就一定是按键被按下。
因此,下拉电阻保证了按键没有被按下时,该管脚有一个确定的唯一的电平状态,低电平。
如何操作硬件?
通过配置对应SFR(0xE0000000---0xFFFFFFFF),集成在CPU内部,只要对这些寄存器进行操作,就可以实现对硬件的操作。
S5pv210处理器,控制GPC1_3管脚:
输出高电平或者低电平,具体步骤:
GPC0_3融慧广泽板子
GPC1_3Tarena板子
1.配置GPC0_3或者GPC1_3管脚的功能为输出口
GPC0_3
GPC0CON0xE0200060(查datasheet)
bit[15:
12]=0001(二进制),表示输出功能
GPC1_3
GPC1CON0xE0200080(查datasheet)
bit[15:
12]=0001(二进制),表示输出功能
2.禁止GPC0_3或者GPC1_3管脚的内部的上下拉电阻
GPC0_3
GPC0PUD0xE0200068(查datasheet)
bit[7:
6]=00(二进制),表示禁止上下拉电阻
GPC1_3
GPC1PUD0xE0200088(查datasheet)
bit[7:
6]=00=(二进制),表示禁止上下拉电阻
3.配置GPC0_3或者GPC1_3管脚的数据寄存器
GPC0_3
GPC0DAT0xE0200064(查datasheet)
bit[3]=1,高电平
bit[3]=0,低电平
GPC1_3
GPC1DAT0xE0200084(查datasheet)
bit[3]=1,高电平
bit[3]=0,低电平
硬件原理图GPC1组管脚共用GPC1_3
S5pv210GPIO管脚
GPC1CON
GPC1PUD
GPC1DAT
(*((volatileunsignedint*)0xE0200080))
GPC1CON=(GPC1CON&0xFFFF0FFF)|0x00001000;
GPC1CON&0xFFFF0FFF:
将GPC1CON值的bit[15:
12]=0000,其它位不变
(GPC1CON&0xFFFF0FFF)|0x00001000:
bit[15:
12]=0001,其它位不变
0000|0001=0001
GPC1PUD&=~0xC0;
0xC000000000000000000000000011000000
11111111111111111111111100111111
GPC1DAT|=8;
1000
将源程序->可执行程序
1.预处理
2.编译:
检查语法错误,将源代码生成对应汇编代码
3.汇编:
将汇编代码生成对应的机器指令*.o
4.链接:
通过链接器将所有的*.o和库,生成最后的可执行文件
led.hled.c
#arm-linux-gcc-march=armv5te-nostdlib-c-oled.oled.c
#arm-linux-ld-nostartfiles-nostdlib-Ttext=0x20008000-eled_main-oledled.o
#arm-linux-objcopy-Obinaryledled.bin
#cpled.bin/tftpboot
ftp:
//arm/tools/SecureCRT
SecureCRT.exe
NandFlash重启开发板:
Tarena#tftp0x20008000led.bin
//将ubuntu服务器下/tftpboot目录中的led.bin可执行程序下载到TPAD客户端的外接内存的0x20008000地址
Tarena#go0x20008000
//执行内存0x20008000地址的二进制代码
如果让LED1灯闪烁?
#arm-linux-ld-nostartfiles-nostdlib-Ttext=0x20008000-eled_main-oledled.o
#arm-linux-objdump-dled>led.s
go0x20008000
反汇编命令,将ELF格式led生成led.s汇编文件
5Disassemblyofsection.text:
720008000
820008000:
e92d4800push{fp,lr}
920008004:
e28db004addfp,sp,#4
1020008008:
e59f3060ldrr3,[pc,#96];20008070 ed_main+0x70> 112000800c: e59f205cldrr2,[pc,#92];20008070 1220008010: e5922000ldrr2,[r2] 1320008014: e3c22a0fbicr2,r2,#61440;0xf000 1420008018: e3822a01orrr2,r2,#4096;0x1000 152000801c: e5832000strr2,[r3] 1620008020: e59f304cldrr3,[pc,#76];20008074 1720008024: e59f2048ldrr2,[pc,#72];20008074 720008000 820008000: e52db004push{fp};(strfp,[sp,#-4]! ) 920008004: e28db000addfp,sp,#0 1020008008: e24dd00csubsp,sp,#12 112000800c: e50b0008strr0,[fp,#-8] 1220008010: ea000002b20008020 1320008014: e51b3008ldrr3,[fp,#-8] Go0x20008000执行delay 2320008038 2420008038: e92d4800push{fp,lr} 252000803c: e28db004addfp,sp,#4 2620008040: e59f3060ldrr3,[pc,#96];200080a8 Go0x20008038 #arm-linux-gcc-march=armv5te-nostdlib-c-oled.oled.c 将led.c源文件生成目标文件led.o -march=armv5te指定生成架构的机器指令(armv5te) -nostdlib指定不使用标准库 #arm-linux-ld-nostartfiles-nostdlib-Ttext=0x20008000-eled_main-oledled.o 生成ELF格式led可执行文件,是需要在有操作系统的情况才能执行 -nostartfiles不使用启动文件 -nostdlib不使用标准库 -Ttext指定代码段的起始地址0x20008000 -e指定程序的入口点(忽略),只是为了消除一个警告 #arm-linux-objcopy-Obinaryledled.bin 将ELF格式的可执行程序,转换成纯二进制代码,将纯指令拷贝出来。 %.o: %.c $(CC)$(CFLAGS)-c-o$@$< %: * $@: 表示目标,*.o $<: 表示依赖,*.c 如何蜂鸣器响起来 1.查看原理图 2.通过原理图,蜂鸣器是GPD0_1管脚控制三极管 GPD0_1高电平三极管导通,蜂鸣器响 GPD0_1低电平三极管截止,蜂鸣器不响 任务: 1.蜂鸣器响 2.蜂鸣器交替响 S5pv210datasheet GPD0组管脚中的GPD0_1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式课件代码armarm 1404 11 嵌入式 课件 代码 armarm
![提示](https://static.bdocx.com/images/bang_tan.gif)