24string2[size-i]=string1[i];
25string2[size+1]='';
26printf("Thestringafterwardis%s\n",string2);
27}
(1)用GCC编译生成有调试信息的可执行程序
gcc-ggreet.c-ogreet
(2)运行greet:
./greet
见结果可见改程序没有能够倒序输出
(3)启动GDB调试:
gdbgreet
查看源代码:
list(或l)
在23行(for循环处)设置断点:
b23
在26行(printf函数出)设置断点:
b26
查看断点设置情况:
infob
运行代码:
run(或r)
单步运行代码:
n
查看暂停点变量值:
pstring2[size-i]
继续单步运行代码数次,并使用命令查看,发现string2[size-1]的值正确
继续运行程序:
continue(或c)
程序在printf前停止运行,此时依次查看string2[0],string2[1],…,发现string[0]没有被正确赋值,而后面的复制都是正确的,这是,定位程序第24行,发现程序运行结果错误的原因在于“size-1”。
由于i只能增到“size-1”,这样string2[0]就永远不能被赋值而保持null,故输不出任何结果。
退出GDB:
quit(或q)
重新编辑greet.c,把其中的“string2[size-i]=string1[i]”改为“string2[size-i-1]=string1[i];”即可。
使用GCC重新编译,查看运行结果:
./greet(调试过程及程序运行结果截图)
5.Make工程管理器的使用
仍使用第2题的hello.c代码
(1)编写makefile文件:
利用vim文本编辑器创建一个makefile文件,并将其保存到与hello.c相同的目录下,注意:
命令前的缩进必须用Tab键。
CC=gcc
hello:
hello.o
$(CC)hello.o-ohello
hello.o:
hello.c
$(CC)-chello.c-ohello.o
clean:
rmhello.ohello
(2)使用Make编译项目。
1)执行make,查看并记录所生成的文件和运行的结果:
make
2)执行clean,清除编译生成的所有文件:
makeclean
ls
*6.熟悉Eclipse集成开发环境。
四、实验结果(粘贴执行结果截图)
2.
3.
4.
5.
六、实验小结(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论。
)
熟悉Linux下C语言开发环境,掌握Vi、GCC和GDB的使用,掌握Makefile文件的编写
学习和掌握Linux下C语言程序设计流程.
实验过程中更加巩固了所学的命令。
福建师范大学协和学院《嵌入式Linux》实验报告
实验日期:
2017年3月28日
学号:
124242014080姓名:
谢志杰
实验台:
D1组员姓名:
谢志杰、洪剑锋
实验三嵌入式Linux开发环境
一、实验目的
1.熟悉嵌入式硬件开发平台。
2.熟悉嵌入式软件开发工具的使用。
3.掌握交叉编译方法。
二、实验环境
硬件:
PC机、ARM实验板及相关配件
软件:
VMwareWorkstation虚拟机、Linux操作系统、Samba、nfs和SecureCRT
三、实验内容及步骤
1.安装VMwareTools实现Windows与Linux文件共享(参考课本P87)
1)打开虚拟机菜单VM->InstallVMwareTools命令,此时虚拟机会将VMwareTools安装镜像加载到虚拟机的Linux系统中
2)打开Linux终端,
进入VMware安装目录:
#cd/media/VMware\Tools/
解压安装文件:
#tar-xvzfVMwareTools--9.2.3-10313360.tar.gz-C/opt
(VMware安装版本根据自己电脑上的版本进行更改,建议用Tab补全)
进入解压后的文件目录:
#cd/opt/vmware-tools-distrib/
执行安装程序:
./vmware-install.pl
随后会出现安装选项需用户确认,可使用回车键,即选择默认选项;
设置虚拟机中Linux与主机之间的共享文件夹:
在Windows任意路径下建立一个文件夹,记住此路径;VM->Settings->option(选项),在出现的对话框,选择SharedFolders,在右侧单选按钮选择Alwaysenabled;单机Add按钮,然后在出现的对话框中选择windows下的共享文件夹路径->NEXT->Enablethisshare->Finish;随后即可在虚拟机Linux下的/mnt/hgfs/共享文件夹名中进行文件共享了
进入后就可以自由在Windows和Linux之间进行文件共享了:
在Windows共享文件夹下新建一个hello.c文件,然后在Linux下查看该文件。
(截图)
2.安装交叉编译工具
Linux系统里的gcc编译出的可执行文件并不能在嵌入式平台上运行,故需要安装能够编译出可在嵌入式平台上运行程序的交叉编译工具。
1)将D:
/RedHatLinux/ARM-tools.tar.gz复制到共享文件夹目录下。
(若权限不够,则更改该目录的权限:
chmod777-R./)。
2)在Linux下解压ARM-tools.tar.gz:
tarxvzfARM-tools.tar.gz
解压后进入ARM-tools目录,可查看到有以下文件:
3)解压交叉编译公交arm-linux-gcc到根目录下:
#tarxvzfarm-linux-gcc-4.3.2.tgz-C/
实际是交叉工具是解压到了/usr/local/arm/4.3.2目录下了,可用ls命令查看
4)打开.bashrc,修改环境变量:
#vim/root/.bashrc
在末行添加:
exportPATH=$PATH:
/usr/local/arm/4.3.2/bin
修改完之后,关闭该文件
5)使环境变量生效:
#source/root/.bashrc
6)试运行该交叉工具:
#arm-linux-gcc
若结果为noinputfiles即配置成功,只是目前还未输入要编译的文件。
(截图)
3.嵌入式实验板和PC机串口通信
使用串口线将开发板和PC机相连,若主机没有DB9串口,则使用usb转串口模块
1)驱动芯片型号为PL2303,先找到usb-pl2303驱动文件,再安装该usb转串口驱动,
2)将该串口和开发板相连接,在设备管理器中查看该设备的串口号COM?
;
3)打开SecureCRT.exe,选Options->Globaloptions设置串口通信模式,波特率等。
4)点击连接按钮,选中自己的串口号
5)将嵌入式实验板连接电源,打开电源,可看到SecureCRT输出登录Linux的信息。
按一下Enter键,进入命令模式。
(截图)
4.交叉开发
3)编辑一个简单的HelloWorld!
程序,该操作在主机的Linux下完成。
4)通过交叉编译器arm-linux-gcc对该程序进行编译,生成可执行文件hello-arm
5)同时通过编译器gcc对该程序进行编译,生成可执行代码hello-x86
6)在Linux系统下分别运行以上两个文件,并查看执行结果(截图)
7)将这两个文件通过Samba拷贝到u盘,将u盘插入嵌入式开发板,开发板将自动挂载U盘,进入目录中查看:
cd/udisk
ls
查看是否有刚刚拷贝过来的hello-arm和hello-x86两个可执行文件
8)有则分别执行这两个可执行文件,查看运行结果。
(截图)
四、实验结果(粘贴执行结果截图)
1.
2.
3.
七、实验小结(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论。
)
成功安装了VMtools工具和交叉编译工具,学会了通过串口将Linux和开发板连接起来并学会了操作命令。
其实安装VMtools工具用到的比较多的命令有的还没学到,通过老师的帮助才成功安装,在本次试验让我对Linux操作系统产生了更浓厚的兴趣,功能很强大。
八、思考题
1.为什么要使用交叉编译,交叉编译出的可执行程序能在主机上运行吗?
对于嵌入式Linux开发,由于嵌入式设备的资源限制,不能在嵌入式设备上完成整个软件的开发,所以需要用到交叉编译。
可以的。
福建师范大学协和学院《嵌入式系统》实验报告
实验日期:
2017年4月11日
学号:
124242014080姓名:
谢志杰
实验台:
A1组员姓名:
谢志杰、洪剑锋
实验四嵌入式Linux系统的下载
一、实验目的
1.熟悉嵌入式硬件开发平台。
2.熟悉Windows系统下将嵌入式Linux的下载方法。
3.熟悉Linux系统下嵌入式Linux系统的下载方法。
二、实验环境
硬件:
PC机、ARM实验板及相关配件
软件:
VMwareWorkstation虚拟机、Linux操作系统、Samba、nfs和SecureCRT
三、实验内容及步骤
1.系统下载准备
(1)安装USB转串口驱动:
路径D:
\RedHatLinux\嵌入式Linux课程软件集\USB转串口驱动\PL2303;
(2)安装驱动后,串口线一端与开发板相连,一端接USB转串口模块与PC机相连,打开设备管理器,查看串口号,没有串口号则表示驱动未安装成功或线没连好;
(3)打开SecureCRT.exe,如下图所示,点击快速连接,设置串口通信模式,波特率等,设置好之后,点击连接。
(4)将开发板启动方式还是保持为Norflash,打开电源,可看到在SecureCRT的输出信息(截图,注意:
若SecureCRT没有输出信息,则先做下面第(5)步,否则跳过第(5)步,直接到第2.安装Linux到开发板)。
(5)*使用Jlink烧写系统安装辅助软件到开发板
1)安装Jlink驱动:
路径:
D:
\RedHatLinux\嵌入式Linux课程软件集\Jlink配套软件
2)安装完毕后,打开程序->SEGGER->J-linkv8...->J-FlashARM
3)将ARM开发板启动方式拨到norflash端,用Jlink将ARM实验板与PC机相连,注意:
jlink输出接口与ARM实验板不同,需接转换器件,再打开开发板电源。
4)J-FlashARM软件界面的菜单栏选择Target-->connect,连接成功后可出现
5)选择file->open选择bootloader(路径:
D:
\RedHatLinux\嵌入式Linux课程软件集\天嵌4.3寸屏出厂烧录镜像\U-boot\u-boot-1.1.6_Q43_20141118.bin)
6)选择Target-erase擦除norflash
7)选择Target-program烧写bootloader到开发板的norflash上,烧写完将Jlink与开发板断开连接,关闭开发板电源(烧写过程最好别再操作电脑,否则易出错)
2.安装Linux系统到开发板(Linux系统下)
1)保持步骤1的串口连接,开发板的启动方式以及打开SecureCRT软件,连接好,并用USB下载线连接到PC机,打开开发板电源,此时电脑会提示安装usb下载线驱动,不要用自动安装方式,可打开设备管理器,带问号的地方点击更新驱动,找到驱动路径为:
(D:
\嵌入式Linux课程软件集\天嵌DNW及usb驱动\TQ2440_USB下载驱动),
设备管理器有出现TQ2440Board则安装成功,同时打开SecureCRT界面看到有开发板的串口输出菜单信息。
2)按照实验三的第一个步骤,安装VmwareTools,实现Windows与Linux文件共享,在任意位置建立一个共享文件夹,复制文件到共享文件夹下,要复制的文件有如下几个:
dnw_usb驱动:
D:
\嵌入式Linux课程软件集\安装Linuxdnw驱动
路径下的两个文件(dnw和dnw_usb);
bootloader文件:
D:
\嵌入式Linux课程软件集\天嵌4.3寸屏出厂烧录镜像\U-boot
路径下的u-boot-1.1.6_Q43_20141118.bin
Linux内核镜像:
D:
\嵌入式Linux课程软件集\天嵌4.3寸屏出厂烧录镜像\Linux-2.6.30.4
路径下的zImage_W43_20141026.bin
根文件系统:
D:
\嵌入式Linux课程软件集\Linux文件系统镜像路径下的root_qtopia_2.2.0_2.6.30.4_256MB_20130330.bin
3)Linux虚拟机打开终端,进入刚刚黏贴文件的目录下(cd/mnt/hgfs/共享文件夹名称),并用ls命令确认;
4)安装dnw驱动程序#insmoddnw_usb.ko
5)格式化nandflash:
在SecureCRT界面里输入9,再输入y(或yes)
6)VMware有如下界面,选择connect
7)下载bootloader:
在SecureCRT界面里输入1
在终端中输入./dnwu-boot-1.1.6_Q43_20141118.bin30000000
(对此及以下的二个步骤7-9的终端界面截图)
8)下