南京理工大学嵌入式系统技术实验报告指导老师:孙瑜实验日期:2014年11月作者:学号:学院(系):班级:1实验一:熟悉Linux开发环境一、实验目的熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。使用Linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。二、实验仪器硬件:UP-NETARM2410-S嵌入式实验平台、PC机。软件:PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境三、实验内容本次实验使用RedhatLinux9.0操作系统环境,安装ARM-Linux的开发库及编译器。创建一个新目录,并在其中编写hello文件。学习在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。四、实验步骤1、建立工作目录[root@zxtsmile]#mkdirhello[root@zxtsmile]#cdhello2、编写程序源代码实际的hello.c源代码较简单,如下:#includestdio.hvoidmain(void){printf(“helloworld\n”);}用下面的命令来编写“hello.c”的源代码,进入hello目录使用vi命令来编辑代码:[root@zxthello]#vihello.c按“i”或者“a”进入编辑模式,录入上面的代码,完成后按Esc键进入命令状态,再用命令“:wq”,保存并退出。这样在当前目录下建立了一个名为“hello.c”的文件。3、编译链接要使上面的“hello.c”程序能够运行,将其经过编译和连接,生成可执行文件。输入gcchello.c-ohello进行编译,再输入./hello运行程序,观察结果1。4、在之前的基础上,进入hello文件,输入armv4l-unknown-linux-gcchello.c-ohello和cphello/arm2410s进行交叉编译,输入ifconfigeth0192.168.0.121设置IP;输入telnet192.168.0.115登入开发板,输入root开始进行挂载:mount-onolock192.168.0.121:/arm2410s/mnt;再通过cdmnt2找到hello文件,最后输入./hello运行程序,观察结果2。五、实验结果观察实验结果1,屏幕上显示helloworld截图如图1所示:图1运行程序观察结果1的输出经过交叉编译、挂载等运行hello文件,观察结果2输出如图2所示,屏幕上同样显示helloworld图2运行程序观察结果2的输出3实验二:多线程应用程序设计一、实验目的了解多线程程序设计的基本原理以及学习pthread库函数的使用。二、实验仪器硬件:UP-NETARM2410-S嵌入式实验平台,PC机。软件:PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境。三、实验内容熟悉几个重要的PTHREAD库函数的使用,掌握共享锁和信号量的使用方法。进入/arm2410s/exp/basic/02_pthread目录,运行make产生pthread程序,使用NFS方式连接开发主机进行运行实验。四、实验步骤1、编写并编译简单的多线程示例程序2、阅读源代及编译应用程序进入exp/basic/02_pthread目录,使用vi编辑器或其他编辑器阅读理解源代码。运行make产生pthread可执行文件。3、下载和调试切换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录。进入/host/exp/basic/pthread目录,运行pthread,观察运行结果的正确性。五、实验结果实验结果如图2.1所示图2.1多线程实验结果截图4实验三:串行端口程序设计一、实验目的了解在linux环境下串行程序设计的基本方法。掌握终端的主要属性及设置方法,熟悉终端I/O函数的使用。学习使用多线程来完成串口的收发处理。二、实验仪器硬件:UP-NETARM2410-S嵌入式实验平台、PC机。软件:PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境。三、实验内容学习终端I/O函数的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中。四、实验步骤1、阅读理解源码进入exp\basic\03_tty目录,使用vi编辑器阅读理解源代码。2、编译应用程序运行make产生term可执行文件[root@zxtroot]#cd/arm2410s/exp/basic/03_tty/[root@zxt03_tty]#make[root@zxt03_tty]#lsMakefileMakefile.baktermterm.cterm.otty.c3、下载调试切换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录。进入exp\basic\03_tty目录,运行term,观察运行结果的正确性。telnet192.168.0.115root[/mnt/yaffs]cd/dev[/dev]ln–sf/dev/tts/0ttyS0(注意首字母是l,不是数字1)[/dev]cd/mnt/yaffs[/mnt/yaffs]mount-tnfs-onolock192.168.0.121:/arm2410s/host[/mnt/yaffs]cd/host/exp/basic/03_tty/[/host/exp/basic/03_tty]./term五、实验结果本实验中打开串口设备接收数据,结果显示如下图3.1所示:5图3.1串口接收数据结果显示实验四:A/D接口实验一、实验目的了解在linux环境下对S3C2410芯片的8通道10位A/D的操作与控制。二、实验设备及工具UP-NETARM2410-S嵌入式实验平台、PC机Pentium500以上,硬盘10G以上。PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境三、实验内容学习A/D接口原理,了解实现A/D系统对于系统的软件和硬件要求。阅读ARM芯片文档,掌握ARM的A/D相关寄存器的功能,熟悉ARM系统硬件的A/D相关接口。利用外部模拟信号编程实现ARM循环采集全部前4路通道,并且在超级终端上显示。四、实验步骤1、阅读理解源码进入/arm2410s/exp/basic/04_ad目录,使用vi编辑器或其他编辑器阅读理解源代码。2、编译应用程序运行make产生ad可执行文件[root@zxt/]#cd/arm2410s/exp/basic/04_ad/[root@zxt04_ad]#make[root@zxt04_ad]#lsadhardware.hmain.oMakefile.baks3c2410-adc.hbinmain.cMakefilereadme.txtsrc3、下载调试6换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录。telnet192.168.0.115root[/mnt/yaffs]mount-tnfs-onolock192.168.0.56:/arm2410s/host[/mnt/yaffs]cdad[/mnt/yaffs/ad]insmods3c2410-adc.o[/mnt/yaffs]cd/host/exp/basic/04_ad/[/host/exp/basic/04_ad]./ad五、实验结果本实验运行结果如下图4.1所示图4.1A/D接口实验运行结果实验五:D/A接口实验一、实验目的掌握MAX504D/A转换芯片的使用方法掌握不带有D/A的CPU扩展D/A功能的主要方法了解D/A驱动程序加入内核的方法二、实验仪器硬件:UP-NETARM2410-S嵌入式实验平台、PC机。软件:PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境三、实验内容了解实现D/A系统对于系统的软件和硬件要求。阅读MAX504芯片文档,掌握其使用方法。7四、实验步骤1.阅读理解源码进入/arm2410s/exp/basic/05_da目录,使用vi编辑器阅读理解源代码。2.编译应用程序运行make产生da可执行文件da_main[root@zxt/]#cd/arm2410s/exp/basic/05_da/[root@zxt05_da]#make[root@zxt05_da]#lsda_mainda_main.cda_main.odocdriversMakefiles3c44b0-spi.h3.下载调试切换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录,然后进入/host/exp/05_da/drivers目录,用insmodexio.o命令插入D/A驱动,并用lsmod命令查看是否已经插入。[/mnt/yaffs]cd/host/exp/basic/05_da/[/host/exp/basic/05_da]cddrivers/[/host/exp/basic/05_da/drivers]insmodexio.oUsingexio.o[/host/exp/basic/05_da/drivers]lsmodModuleSizeUsedbyNottaintedexio23840(unused)i2c-tops2141040(unused)进入/host/exp/basic/05_da目录,运行./da_main,观察运行结果的正确性。[/host/exp/basic/05_da]./da_main01五、实验结果通过ls查看da_main,结果如图5.1所示:图5.1da_main的内容用insmodexio.o命令插入D/A驱动,并用lsmod命令查看是否已经插入。查看结果如下图5.2所示:8图5.2观察D/A驱动是否插入进入/host/exp/basic/05_da目录,运行./da_main,观察运行结果如下图5.3所示,电压为1v:图5.3运行da_main输出结果9总结本次实验内容安排紧凑,实验一的操作过程让我们尽快熟悉了实验环境,学会使用vi编辑查看代码以及设置NFS等环境参数,而接下来的实验则让我们渐渐对各种的基本命令有了最直接的认识。通过让我们自己编辑代码,运行程序,观察结果来逐步了解这些代码的含义。实验是一次学与习的过程,让我们在操作的同时加深理论认识。此外,实验过程中碰到的形形色色的问题也让我们收获颇丰,通过学长学姐们的解释与指导,让我们将所学知识得到一定的扩展。致谢感谢实验过程中学长学姐们的耐心指导以及同学们的热心帮助,最后感谢老师在课上的悉心教导!