S3C44B0 试验说明.docx
《S3C44B0 试验说明.docx》由会员分享,可在线阅读,更多相关《S3C44B0 试验说明.docx(24页珍藏版)》请在冰豆网上搜索。
![S3C44B0 试验说明.docx](https://file1.bdocx.com/fileroot1/2022-11/30/615f04f9-cba6-4eb3-94a7-b940b496f914/615f04f9-cba6-4eb3-94a7-b940b496f9141.gif)
S3C44B0试验说明
S3C44B0试验说明
S3C44B0学习板附带了以下的例程,这样大家可以快速的掌握S3C44B0这款ARM芯片以及如何开发基于ARM的嵌入式程序。
本光盘中自带的例程都是在ADS1.2集成开发环境下完成的。
ADS1.2是CodeWarriar公司开发的一款ARM嵌入式程序集成开发环境。
在使用光盘中的试验例程之前我们需要做以下的准备工作安装ADS1.2安装调试代理将程序从光盘拷贝到硬盘中,并去掉文件的只读属性。
一、安装ADS1.2
将安装包其解压后,双击setup.exe开始安装,在拷贝文件结束后将出现ARMLicenseWizard界面,如下图,在这里需要安装license文件。
点击下一步,选择InstallLicense,点击下一步。
在这里选择安装目录下的Crack下的license.dat文件然后点击下一步完成认证。
认证过程也可以在软件安装完毕后选择LicenseInstallationWizard来重新认证。
二、安装H-JTAG调试代理
将光盘:
\工具\JTAG工具\H-JTAG+V0.7.0.rar目录拷贝到硬盘,然后解压缩,安装解压目录下的可执行文件。
从开始菜单选择AXDDebugger,如图
进入调试环境后,选择如下选项
进入代理选择对话框,如下:
选择Add按钮,找到H-JTAG的安装目录,添加调试代理的DLL库,如下
选择确定后,选择Configure,出现如下界面,表示H-JTAG代理安装正确并作为缺省选择。
确定后,按OK键,如果JTAG调试器和开发板连接正确,会出现如下界面
到这一部H-JTAG配置正确,可以直接从编译环境直接进入调试环境调试,如下图:
三、试验
在做以下试验的时候请注意,如果你的Memory控制部分没有正常的初始化,在AXD调入编译好的images后,我们执行run指令,程序会跑飞。
其原因就是因为Memory控制没有正常的初始化,这是后我们有两种方法解决。
1.将U-Boot先烧入到Flash当中,这样每次上电U-Boot程序都将初始化好我们的硬件,当然也包括了Memory控制器。
这样我们的测试程序就能够正常的运行。
2.使用命令行来执行Memory控制器的初始化,将光盘:
\测试程序\44b0.INI文件拷贝到硬盘中,在这里我们拷贝到C:
盘更目录下。
然后打开AXD的命令行窗口,执行obeyc:
\44b0.ini指令。
这样就初始化好了Memory控制器,然后我们再重新调入image,再执行就好了。
参看下图。
试验一LED跑马灯实验
试验目的:
掌握S3C44B0GPIO口的使用。
工程路径:
光盘:
\
硬件原理:
S3C44B0一共包含PORTA,PORTB,PORTC,PORTD,PORTE
先将工程目录拷贝到本地硬盘,去掉所有文件的只读属性。
将JTAG板子跳线到Wiggler接口,连接到学习板上,点击AM7.exe运行调试代理软件,JTAG连接正常后应该显示如下画面。
当然也可以选择Sdt的接口方式,但一定要和JTAG小板上的Wiggler和STD的跳线选择一致,我们在这里选择Wiggler接口方式来完成我们的实验。
打开工程
接下来运行ADS1.2,点击菜单File->Open选择工程目录下的led.mcp工程文件(.mcp文件是ADS的工程文件),打开工程,界面如下:
上图是LED跑马灯程序源码树,SRC目录中存放了汇编和C的源码,INC目录存放了汇编与C头文件。
led_Data目录是项目输出目录,其中一共包含Debug,DebugRel与Release三个目录,刚好对应于项目工程的三种配置,我们当前使用的是DebugRel配置。
对于DebugRel的配置我们主要关心以下几个参数的设置,参看下图在下拉菜单中选中DebugRel为当前配置,点击旁边的配置设置按钮弹出设置框。
在项目配置对话框中选择ARMLinker->Output选项卡,确认ROBase(只读数据段的起始地址,也就是代码段其实地址)填入SDRAM的地址(这里我们填入了0x0C000000,学习板的SDRAM一共8M字节,地址范围为0x0C000000~0x。
ROBase地址是我们程序代码放置地址,由于是通过JTAG下载到SDRAM中调试,所以这个地址一定要填写SDRAM中的地址)。
接下来我们选择Options选项卡,如下图:
在ARMLinker->Options选项卡中,我们需要填入的是Imageentrypoint(程序的入口地址)。
这里我们填写的地址与ROBase相同,也就是说程序是从代码段基地址开始执行的。
然后我们再打开ARMLinker->Layout选项卡进行设置,如下图:
这样设置好后,我们相当如设置了程序的代码段其实地址,程序入口地址以及哪个目标文件中的哪个段放在代码段的起始的地方,如下图,起始地址是0x0C000000,代码段起始地址0x0C000000,将vector.o目标文件的SelfBoot段放在代码段的起始地方。
我们可以打开vector.s文件看到如下这一段代码,其中就有名为SelfBoot的代码段。
编译
接下来编译跑马灯工程,点击编译快捷按钮,如下图。
编译后将会有输出信息,包括错误,警告等。
如果编译成功,可以看到各个段的大小等信息。
调试
点击Debug快捷按钮,将打开AXDDebug环境。
如果出现以下这样的提示,是因为AXD对于一个工程的调试将会有一个session文件来保存当前的调试环境配置,如果出现这个表示当前的调试环境配置找不到,点击确定后在选择.ses文件对话框选择直接选择取消就好了。
在AXD调试界面下选择菜单Options->ConfigureTarget,如下图,打开Target配置窗口,
硬件仿真选择ADD,软件仿真选择第二项ARMUL。
在这里我们选择ADD,如果是第一次使用AXD作硬件仿真,选择ADD项后点击Configure进一步配置。
配置完成后选择AXD的菜单File->LoadImage,装载待调试的程序。
此例子中我们工程的目录结构如下:
DebugRel目录就是当前工程配置对应的输出目录,led.axf(ELF格式的)文件是编译后程序Image,ObjectCode是存放编译过程中产生的目标文件的存放目录。
(注DebugRel,OjbectCode目录都是建立工程的时候自动生成的,不需要用户手动创建。
)显然,led.axf就是我们要选择的Image文件。
选择led.axf文件,程序被调入到AXD调试环境当中,如下图:
程序指针执行第一条语句,在AXD环境中调试程序和大多数的调试环境一样,我们可以设置断点,单步执行,查看变量的值等等。
本试验程序的效果是LED1,LED2,LED3轮流闪烁,我们可以通过修改延时的参数开控制闪烁的频率。
打开main.c文件修改下列宏
#defineLEDTEST_DELAY500000
我们可以方便的控制闪烁频率。
试验二键盘控制LED实验
试验目的:
检测S3C44B0外部中断管脚EXTINT4,5,6,7输入,然后控制LED灯。
本程序采用轮训
终端的方式检测中断。
工程路径:
光盘:
\测试程序\按键控制LED\keyled
项目工程:
keyled.mcp
硬件原理:
S3C44B0支持8个外部中断源,分别是ExINT0~ExINT7,其中ExINT4,5,6,7中断线在中断控制器内部是共享一个中断的,当这几个中断发生时,我们需要查询EXTINTPND(外部中断标志寄存器)积存器来判断到底是哪个或者是哪几个产生了中断,再执行相应的操作。
电路上面,4个1×4键盘分别接在外部中断4,5,6,7上。
在处理中断的时候我们需要惯性以下几个寄存器:
1.INTMOD(中断模式寄存器)
指定每个中断源的模式,是IRQ还是FIQ。
2.INTCON(中断控制寄存器)
主要控制当前的中断模式使能,包括使能IRQ中断,FIQ中断和Vector中断。
3.INTPND(中断标志寄存器)
标志当前产生中断的中断源。
4.EXTINT(外部中断控制寄存器)
控制外部中断的触发模式,是电平触发(高低电平)还是边沿触发(正跳变,负跳变或是正负跳变)
5.EXTINTPND(外部中断标志寄存器)
标志当前产生中断的ExINT4,5,6,7。
我们这个试验是通过轮训的方法来检测是哪个外部中断(ExINT4,5,6,7)产生了,并做相应的操作。
具体操作如下:
中断源
相应操作
ExINT4
点亮LED1
ExINT5
点亮LED2
ExINT6
点亮LED3
ExINT7
熄灭LED1,LED2,LED3
试验三RTC实时时钟实验
试验目的:
测试S3C44B0内部集成的RTC实时时钟功能。
工程路径:
光盘:
\测试程序\RTC实时时钟\rtc\
项目工程:
rtc.mcp
硬件原理:
S3C44B0内部集成了RTC实时时钟管理,片外只要接一个32.768K的晶体和一个电池就能够完成实时时钟功能。
并且内部提供了一组相关的寄存器,使用起来相当方便。
本试验我们使用了以下的寄存器:
寄存器
地址
功能
RTCCON
0x1d70040
RTC控制寄存器,其中RTCEN位控制RTC寄存器读写,在操作RTC寄存器前需要使能,操作完后可以禁止掉
BCDSEC
0x01D70070
保存当前的秒钟值
BCDMIN
0x01D70074
保存当前的分钟值
BCDHOUR
0x01D70078
保存当前的时钟值
BCDDAY
0x01D7007C
保存当前的日期值
BCDMON
0x01D70084
保存当前的月份值
BCDYEAR
0x01D70088
保存当前的秒钟值
此测试程序需要连接串口超级终端,程序执行后会先打印出当前的系统时间,包括年、月、日、时、分、秒。
然后提示用户是否需要设置新的系统时间,如果需要,键入“y”,然后根据提示输入年、月、日、时、分、秒。
程序最后提示系统断电,然后过一段时间后重新上电。
最后运行测试程序看打印输出的当前时间是否正确。
试验四USB试验
试验目的:
简单测试学习板USB设备的功能。
上位机(PC)软件通过USB下发指令操作
工程路径:
光盘:
\测试程序\USB测试\usb\
项目工程:
usb.mcp
硬件原理:
本系统包含了一片Philips的USB设备芯片PDIUSBD12。
PDIUSBD12是一款性价比很高的USB器件,符合USB1.1规范,带有并行数据总线接口,支持DMA传输,很适合作为微控制器系统中实现与微控制器进行通讯的高速通用并行接口。
S3C44B0通过nGCS片选信号来选通他。
关于USB原理,请参看光盘:
\文档\USB论文.pdf文档。
试验步骤:
在这里我们以WindowsXP系统为例:
1.接通电源,打开调试代理软件,在ADS1.2集成环境中打开usb.mcp工程并进入AXD调试环境。
2.将USB连线的一端连好(这里我们假设先连好PC这端,44B0板这段先不连,等到程序运行后再连)。
点击全速运行,这是后程序会跳入main断点,然后再点击全速运行,这是后程序跑起来了。
3.在44B0上插入USB线,几秒钟后,Windows将自动检测到有新的USB设备插入并加载相应的客户端驱动程序。
如果是第一次使用,Windows并没有安装好PDIUSBD12的客户端驱动程序,这时候Windows会提示用户安装驱动程序,如下图所示。
驱动程序在光盘:
\测试程序\USB测试\PDIUSBD12驱动程序\目录中。
其中包括了两个驱动程序,一个是Windows98下使用的,另外一个是Windows2000与WindowsXP下使用的,Win98与Win2000/XP驱动程序有所不同,是因为驱动程序的模式不同。
Win98是VXD的,而Win2000/XP是WDM的。
选择从列表或指定位置安装(高级)选项,点击下一步继续。
选择不要搜索。
我要自己选择…点击下一步继续。
这里我们点击从磁盘安装,将出现以下界面:
点击浏览,在随后的提示框中选择win2k_xp中的D12test.inf文件。
然后选择打开
选择好安装信息后,我们回到以下界面,然后选中PhilipsPDIUSBD12EvaluationBoard这一项安装。
随后出现拷贝驱动程序的过程,驱动程序一般都会拷贝到C:
\Windows\System32\Drivers目录下。
在拷贝过程中将会弹出一下窗口,选择仍然继续继续安装。
安装完毕后,我们可以在设备管理器中看到PhlipsPDIUSBD12EvaluationBoard这一项,请参看下图:
注:
打开控制面板,选择系统->硬件->设备管理器
4.启动Windows下测试程序,光盘:
\测试程序\USB测试\LEDDEMO.EXE。
将弹出一个带有三个按钮的界面,这三个按钮分别对应于板子上的三个LED灯,点击按钮将点亮相应的LED,再点击一下,相应LED灯将熄灭。
试验五IIS音频测试
试验目的:
测试S3C44B0的IIS总线功能。
通过串口将待播放的文件下载到学习板的SDRAM中,然后回放出来。
工程路径:
光盘:
\测试程序\音频测试\sound\
项目工程:
sound.mcp
硬件原理:
IIS(Inter-ICSoundbus)又称I2S,是菲利浦公司提出的串行数字音频总线协议。
目前很多音频芯片和MCU都提供了对IIS的支持。
试验步骤:
1.连接好串口后,运行光盘:
\工具\超级终端\dnw.exe程序,并选择SeiralPort->Connect连接串口。
这是一个类似超级终端的软件,能够通过串口发送文件。
我们将利用这个工具将我们需要播放声音文件通过串口下载到44B0的SDRAM中。
2.运行调试代理,在ADS1.2中打开sound.mcp工程并进入AXD调试环境,调入已经编译好的sound.axf文件,然后全速运行。
3.终端软件上将提示用户输入,如下图:
我们键盘输入0,通过串口下载音频文件,这时候中断答应出下载文件到0xC400000...
这时候我们选择SerialPort->Transmit来传送文件。
在弹出的对话框中选择一个我们提供的.WAV文件。
接下来就是文件下载的过程。
下载结束后,终端将提示用户是否运行刚才下载的文件,由于我们下载的文件是音频文件而不是程序,我们一定要选择N,不运行此文件。
接下来终端会继续提示用户输入,这里我们输入1,开始播放刚才下载的音频文件。
请参看下图:
试验六总测试程序
试验目的:
一个比较全面的测试程序,测试各种外围设备。
工程路径:
光盘:
\测试程序\44B0测试\44B0Test\
项目工程:
44B0Test.mcp
除了以上单独的测试程序,我们还提供了一个比较完整的测试程序,其中包括了:
nCache,
nDMA测试
n键盘
nLED跑马灯
nUART0/1各种模式下的测试,包括中断方式,DMA方式
n看门狗WatchDog测试
nIIC存取E2PROM(AT24C02)测试
nPWM测试
nRTC测试
测试步骤:
1.运行ARM调试代理软件,进入ADS1.2集成开发环境打开44B0Test.mcp工程,然后启动AXD调试环境调入44B0Test.axf文件。
点击全速运行,超级中断上将出现以下界面:
在这里,我们可以按照提示输入想要测试的项目号,然后回车即可开始相应的测试。
要注意的是,由于这里面很多的测试都用到了中断,而起中断程序的执行都依赖于Flash中的U-Boot程序里面的中断程序处理,所以如果你的板子上U-Boot程序被擦除或者改写,请先将U-Boot程序重新写入到Flash当中,然后再运行此测试程序。
试验七Beep音乐程序
试验目的:
测试S3C44B0X的PWM输出。
工程路径:
光盘:
\测试程序\Beep音乐程序\beepsound
项目工程:
44B0Test.mcp
S3C44B0学习板上有一个无源蜂鸣器,其由S3C44B0的PWM输出控制。
无源蜂鸣器与有源蜂鸣器的区别是在于其内部不带有信号发生电路,必须由外保护输入一定频率的信号来驱动。
本程序就是利用了这一点,通过间断地改变PWM的输出频率以使得无源蜂鸣器发出不同频率的声音。
试验八UART串口程序
试验目的:
测试S3C44B0X的串口交互。
工程路径:
光盘:
\测试程序\uart
项目工程:
uart.mcp
S3C44B0学习板上有孔型RS232插座,其由S3C44B0的串口0控制。
通过把超级终端设为波特率115200,可以实现和开发板的交互。
试验九黑白液晶测试测序
试验目的:
测试S3C44B0的黑白液晶的控制功能
源码路径:
光盘:
\测试程序\LCD测试\lcd12864\
工程项目:
lcd-demo.mcp
学习通过GPIO方式以串行方式控制黑白带中文字库的液晶
试验十彩色液晶测试测序
试验目的:
测试S3C44B0的STNLCD接口的功能
源码路径:
光盘:
\测试程序\LCD测试\STN_160X240\
工程项目:
uCGUI.mcp
学习使用STN接口的彩色液晶,掌握DMA的方法,该实验较为复杂,难度较大。
实验过程中需要调节液晶板上的右侧电位器控制亮度,左侧电位器控制对比度。