




已阅读5页,还剩70页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一:开发工具的使用安装ads在开发工具目录下的ADS1.2下面双击【SETUP.EXE】,安装到默认目录【C:Program FilesARMADSv1_2】破解ads安装ads的过程中会提示安装license,出现如下界面点【Browse】定位到ads的安装文件的【CRACK】目录,选中LICENSE.DAT文件即可3. 安装调试工具HJTAG 双击【H-JTAG V0.4.4.EXE】 安装完毕,在安装目的文件夹下面将会有下列文件:4. 如何使用H-JTAG进行调试双击桌面上的【H-JTAG】图标将会弹出如下窗口如果JTAG连接板一边连上了PC的打印口,一边连上了开发板,那么点击H-JTAG Server的将会出现,中间部分表示已经找到了CPU的ID号。PC并口位于后面板,如下图H-Ttag连接板如下:二运行测试例程,验证开发板是否OK运行老师给的myled工程文件,即双击myled.mcp文件可以看到以下界面:点开main.c,看看源码看不懂,没关系,直接运行,看结果点【】将会调出AXD调试界面运行程序点出现下面界面观察开发板灯态,灯在亮灭!三,程序起源第一条语句,存放在哪里,如何执行3.1 建工程NEW-选中Project-ARM Executable Image,然后在Project name中填写你要命令的工程名字,最后在Location下面选中你要存放你工程的目录点确定后,将会在你选中的目录下面生成一个以你工程名相同的目录,而且在该目录下有一个你命名的工程3.2 接下来,新建文件与新建工程一样,进入NEW目录,在该界面下,选中File文件,如下图所示点确定后,将会出现如下情形因为是新建文件,里面为空。3.3. 如何写代码看老师给的中文-ARM_汇编zhiling.pdf中的第107页,从第96页一直看到107页,特别是107页的那个完整的例子。3.4 搭框架 通过C语言的程序框架来理解汇编的程序框架3.5 框架搭好了,第一条语句怎么写看老师给的中文-ARM_汇编zhiling.pdf中的第15页ARM汇编指令分ARM指令集和thumb指令集,我们只需要了解以下ARM指令集就行了,ARM指令集分,储存器访问指令,数据处理指令,跳转指令,杂项指令,伪指令几种。看,中文-ARM_汇编zhiling.pdf中的目录结构。要用到那类指令,就到相关目录下去找,无需死记硬背。写一条数据处理指令mov r0,#0x88记得保存3.6然后编译编译成功如下生成的目标文件生成的可执行文件axf生成的bin文件3.7 真正认识目标文件,可执行文件,二进制文件 Axf文件 Start.o目标文件Start.bin文件四:ARM机器码 4.1 指令码,条件码五: 认识什么是cpu中的寄存器5.1 r14lr寄存器5.2 r15pc寄存器为什么pc=0x30000000六:从根本上理解内存的概念0x30000000的来历-上面配置中的0x30000000又是根据什么来的?查看老师给的s3c2440全套中文资料 我们的SDRAM位于0x300000000x40000000=?多少M 我们的板子有多少M,SDRAM 见mini2440-um-20090223.pdf 我们的CPU总共可以挂载256M的sdram,而实际上,我们的板子只有64M。那,这64M内存空间究竟位于0x300000000x40000000中的哪个位置呢?这个由硬件工程师来决定。参见原理图mini2440原理图.pdf两个HY57V561620 拼成64M因为,物理上HY57V561620的片选信号是接在2440的nGCS6上,所以,我们的内存是0x300000000x34000000-能心算出来吗?6.1 存储器系统6.2 如何访问我们的内存先看一个非常重要的数据文件搞清楚代码和数据存放位置,彻底理解了吗?6.3用汇编代码怎么实现? Ldr ,str汇编指令,怎么用?不用急,不用背,参考资料中文-ARM_汇编zhiling.pdf第19页六-:总线的概念6.1 哈弗结构&冯诺依曼结构七:怎么从汇编过渡到CIMPORT是导入外部符合的意思,不懂的参考中文-ARM_汇编zhiling.pdf注意在单步执行或者全速运行的时候出现下面现象是优化等级的问题设置成调试模式八:s3c2440 GPIO控制原理思路:要控制一个设备,首先想到的是搞清楚这个硬件设备在什么位置。怎么办? 参考mini2440-um-20090223.pdf第13页找到丝印再找原理图参考原理图mini2440原理图.pdf第3页。通过网络表Nled_1,在原理图中找到控制这个灯的cpu引脚。找到cpu引脚与LED灯的对应关系如下GPB5-Nled_1GPG6-Nled_2GPB7-NLED_3GPB8-NLED_4接下来怎么办?接下来就要看cpu的说明书了,就像我们买了一个微波炉,使用前就要看一下它的说明书,我们CPU的说明书就是s3c2440的datasheet。即S3C2440全套中文手册.PDF8.1 datasheet怎么看Cpu的简介,搞清楚我们这个cpu有哪些资源。8.2 GPIO控制原理GPBCON xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx GPB10 9 8 7 6 5 4 3 2 1 0两个位控制一个引脚,所以GPB0GPB10共11各引脚,需要021共22各位来设置00-该引脚配置为输入01-该引脚配置为输出10-该引脚配置为其他特殊功能11-一般引脚表示保留,未使用要让我们四个LED亮灭,GPBCON寄存器该如何设置呢?GPBCON=?GPBDAT是数据寄存器,用来控制(或者反应)引脚的高低电平,该寄存器是一个位对应一个引脚,如果某个位为0那么对应引脚为低电压,如果为1则引脚为高电平GPBDAT xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx GPB 10 9 8 7 6 5 4 3 2 1 0原理搞清楚了,程序怎么写?8.3 程序怎么写我们要把某个引脚设置为输出,也就是我们的GPBCON寄存器要配置为0x15400,那么这个值怎么给我们的cpu呢?这里的地址,就是cpu提供给我们控制它的接口。知道了这个接口,代码怎么操作呢?这里涉及到怎么访问可读性的绝对地址问题?学生动手实现延时函数,宏定义,led配置,led亮,led灭函数。8.4 作业,学生自己实现beep九:s3c2440时钟系统参考S3C2440全套中文手册.PDF152页。时钟系统中:FCLK,HCLK,PCLK的关系AHB,APB两者的关系PLL的意思电源管理中:普通模式的理解-功耗最大,速度最快慢速模式的理解-没有PLL空闲模式的理解-cpu空闲,没有时钟,其他外设有时钟睡眠模式的理解-cpu和内部逻辑电源关闭,唤醒逻辑电源是开启的,通过EINT或RTC唤醒。OM3:2怎么理解?引申一点:OM【1:0】怎么理解?对PLL的大概认识:FCLKFCLK默认值=2*m*Fin/(p*2s)=2*(MDIV+8)*12/(PDIV+2)*2SDIV) =2*158*12/(5*2)=379HCLK根据CLKDIV2:1来设置PCLK根据CLKDIV0来设置9.1 代码实现这样设置真的打开了吗?如果有示波器量量就清楚了,示波器真是个好东西!9.2 关于锁定时间9.3 注意各模块都有时钟开关十:定时器参考S3C2440全套中文手册.PDF212页。步骤:1:配置分频值2:设置控制寄存器3:设置相关定时器通道的计数值4:通过观察寄存器判断是否计数到010.1配置分频值 TCFG07:0第70位设置定时器0,1的预分频值 TCFG015:8第158位设置定时器2,3,4的预分频值 如果我们要用定时器4,而且要255分频该怎么设置呢?代码怎么写? 该寄存器配置五个定时器的档位,分2,4,8,16档如果我们要使用定时器4,且16分档,该寄存器怎么设置呢?10.2 配置控制寄存器主要是设置TCON寄存器, 我们使用的定时器4,那么只需要设置TCON【22:20】位即可。10.3 配置计数缓冲寄存器给整个PWM提供的时钟是PCLK(50Mhz),首先经过255分频,然后16分频得到,50*1000000/255/16=12254.9=12255所以TCNTB4该设置为1225510.4 怎么知道计数器计数到0了这个寄存器是一个侦测寄存器,它时刻侦测定时器4的计数器值,所以,我们可以通过它来判断计数器是否计数到0.10.5 pwm实现自动控制蜂鸣器十一:按键实现作业,实现KEY1控制LED1的亮灭(按下亮,再按灭) 实现KEY2控制LED2的亮灭(按下亮,再按灭) 实现KEY3控制LED3的亮灭(按下亮,再按灭) 实现KEY4控制LED4的亮灭(按下亮,再按灭) 实现KEY5控制beep(按下响,再按不响)十二:中断12.1 不用中断如果没有中断,是怎么样一种情况呢?看下图:如果不用中断,要实现每一秒定时亮灭一次,亮灯的程序只能放在while里面,或者做成一个函数在while里面调用!12.2 不用中断带来的问题问题一:实时性不够好问题二:没有优先级概念,重要事情得不到体现12.3 使用中断的程序结构:12.4 很奇怪的现象没有地方调用Timer4_ISR函数,断点如何进去?12.5 顺藤摸瓜跟这个函数有关的地方是pISR_TIMER4 = (unsigned int)Timer4_ISR;这条语句。这条语句实现的功能是,把某个函数名称复制给一个地址!pISR_TIMER4定义在而_ISR_STARTADDRESS定义在:最后的结果就是:(*(unsigned *)(0x33ffff00+0x58) = (unsigned int)Timer4_ISR; 这些地址就是提供给我们程序员存放中断服务程序地址的! 当我们定时器中断发生时,cpu如何跳到(0x33ffff00+0x58)处取出中断服务程序地址?回答这个问题,要从arm中断体系讲起!十三:arm体系结构13.1 arm八种模式13.2 八种模式的运行过程13.3 八种模式寄存器13.4 CPSR&SPSR寄存器13.5 七种异常13.6 异常向量表,IRQ向量表,MMU之间的关系 因此,通过MMU,当IRQ中断发生时,程序可以条到0x300000018处运行,而此处是一条跳转指令b HandlerIRQ,那么HandlerIRQ在哪里呢?我们再来看汇编里面的关系!十四:s3c2440启动代码中断脉络关系bicr0,r0,#MODEMASK 0x1f Xxxx xxxx xxxx xxxx Bic 0000 0001 1111 1100 Xxxx xxx00 000 ; Setup IRQ handlerldrr0,=HandleIRQ ;This routine is neededldrr1,=IsrIRQ ;if there is not subs pc,lr,#4 at 0x18, 0x1cstrr1,r0 HandleIRQ = IsrIRQ HandlerIRQ /SP=0x33ff7000 sp-4=0x33ff6ffcsubsp,sp,#4;decrement sp(to store jump address)stmfdsp!,r0;PUSH the work register to stack(lr does not push because it return to original address)ldr r0,=HandleIRQ;0x33ffff00+0x18= load the address of HandleXXX to r0ldr r0,r0 ;r0=0x33ffff00+0x18=ISR_IRQ load the contents(service routine start address) of HandleXXXstr r0,sp,#4 ;store the contents(ISR) of HandleXXX to stackldmfd sp!,r0,pc ;POP the work register and pc(jump to ISR)MEND当IRQ异常发生时,cpu跳到0x300000018处执行程序(本来cpu是跳到0x00000018执行的,但是因为有MMU的映射,就跳到了0x300000018),而0x300000018处放的是一条跳转语句b HandlerIRQ,而HandlerIRQ是一个宏,展开后,实际上是去执行HandleIRQ,而HandleIRQ在之前(irq异常中断发生前)就已经复制了,该地址(即HandleIRQ)处存放的是IsrIRQ处的代码地址。IsrIRQ实现的就是从IRQ向量表中取出当前发生中断的中断服务程序地址,即(0x33ffff00+0x58)的地址Timer4_ISR。十五 0x33ffff00的迷惑0x33ffff00这个地址,是我们程序员来定义的,当我们地址到0x32ffff00的时候,记得在mmu映射时,要定义好映射基地址,十六:串口通信16.1 串口长什么样子16.2 通信过程16.3 串口通信可以做什么 GSM,GPSR,3G,4G模块=手机最基本的通信功能 Bluetooth模块=蓝牙通信 工业485通信16.4 串口通信原理16.5 怎么实现通信(PC端)PC端,设备管理器里并对PC端,串口进行配置16.6 怎么实现通信(S3C2440端)16.7 要发送的数据往哪儿放?代码如何写:*(unsigned int *)0x50000020 = data/data为我们要发送的数据(8位)16.8 怎么知道发送完毕 数据给了发送器,那么串口控制器肯定有一个状态寄存器来指示其中的第二位就是指示发送器为空的,当UTRSTAT02=1,表示发送器为空了,也就是我们给UTXH0的数据发送完毕了。代码怎么实现?while(!(*(volatile unsigned int *)0x50000010) & 0X4);16.9 怎么设置端口号,波特率 关注细节 1:怎么设置端口号 2:怎么设置波特率我们要找到设置数据位,停止位,校验位,波特率的寄存器。数据位,停止位,校验位的设置:我们通过ULCON0来设置串口0的数据位,停止位,校验位,代码实现:*(unsigned int *)0x50000000 = 3/时钟的选择,通道开关:这组寄存器是用来设置串口时钟源的!我们选择PCLK,这里的默认配置就是00; 代码实现:该寄存器只需要设置如下值: *(unsigned int *)0x50000004 = 4/使能发送mode波特率的设置:波特率的计算根据公式: 所以UBRDIV0 = PCLK/(115200*16)-119.20如何写代码实现向PC发送helloworld字符串PC端结果好像发送速度太快,如何加入延时函数?发送单字符成功了,如何发送字符串?16.20 如何做接收功能?接收功能就是,PC端向我们的板子发送字符,我们要写程序接收。十七:看门狗17.1 复位功能#define WTCON (*(volatile unsigned int *)0x53000000)#define WTDAT (*(volatile unsigned int *)0x53000004)#define WTCNT (*(volatile unsigned int *)0x53000008)WTCON = (2558) | (15) | (03) | (02) | (10); 问题:怎么解决这个问题?17.2 中断功能十八:AD转换18.1 要搞清楚的几个问题:1:为什么说分别率是10位的-对分别率的理解答:这是由数据手册标明的,2440的ad位数是10位,所以分别率是10位;2:转换时钟(2.5Mhz)与采样频率(500ksps)的关系答:转换时钟2.5Mhz即指每秒有2500次;上面提到在2.5Mhz的转换频率下采用频率是500ksps,那么就知道每采用一次需要5个时钟。3:线性误差的概念4:供电电压和模拟输入范围电压
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教部编版八年级上册第二单元 近代化的早期探索与民族危机的加剧第5课 甲午中日战争与列强瓜分中国狂潮教案设计
- 2024中建港航局春季招聘200人笔试参考题库附带答案详解
- 胆囊切除术的护理常规
- 2024中国船舶集团有限公司所属单位岗位合集笔试参考题库附带答案详解
- 人教版一年级下册7. 找规律教学设计
- 六年级下信息技术教学设计-我的兴趣爱好-吉教版
- 《圆的面积(二)》(教学设计)-2024-2025学年北师大版小学数学六年级上册
- 大气环境生态信息法规重点基础知识点
- 2025年河南省周口市项城市两校联考中考一模道德与法治试题(原卷版+解析版)
- 【RGF国际招聘】2024年薪酬观察报告-新加坡篇
- 4M1E管理培训课件
- GB/T 33582-2017机械产品结构有限元力学分析通用规则
- 注塑工艺培训资料史上最全课件
- 大数据和人工智能知识考试题库600题(含答案)
- 城市建设工程规划核实测量讲解课件
- 网络反诈知识竞赛参考题库100题(含答案)
- 加油站安全管理培训课程课件
- 幼儿园中班语言绘本《章鱼先生卖雨伞》课件
- 《兰亭集序》《归去来兮辞并序》对比阅读课件17张-统编版高中语文选择性必修下册
- 人教版七年级下册数学:第七章 平面直角坐标系 测试课件
- 广东省广州市各县区乡镇行政村村庄村名明细及行政区划代码
评论
0/150
提交评论