配置内核:
启动菜单配置工具后,选择“Load Alternate Configuration File”选项,然后确认。该选项载入jx2410的标准配置文件config-jx2410,该文件保存在/home/cvtech/jx2410/linux目录下,请不要修改这个文件。在提示框中键入config-jx2410配置文件名,然后选择“OK”确认,将退回到主菜单。然后按“Esc”键退出,并将提示是否保存,请选择“Yes”保存。
建立依赖关系:
编译:
2、在目标机上启动Linux内核 (1)配置主机ip为192.168.1.180。在主机上把zImage和ramdisk.gz复制到/tftpboot目录下。 (2)运行环境变量loadlinux。启动目标机的Linux系统。
3、挂接主机和目标机
挂载主机/tftpboot/挂接目录 到目标机(JXARM9-2410试验箱)/mnt/nfs目录下,输入如下命令:
# mount 192.168.1.180: /tftpboot/挂接目录 /mnt/nfs [实验报告要求]
1、实验报告包括实验目的、实验内容、实验步骤、实验结果和实验小结。 2、写出实验内容使用的命令和结果(截图表示)。
实验四: 串口应用程序编写实验
[实验目的]
1. 了解Linux下串行端口程序设计的基本原理。
2. 掌握终端的主要属性及设置方法,熟悉终端I/O函数的使用。 3. 掌握JXARM9-2410下的串口应用程序的编程方法。 [实验内容一]
1、 编写serial应用程序。 2、 编写Makefile文件。
3、 下载并调试serial应用程序。 [预备知识]
1. C语言的基础知识。
2. 程序调试的基础知识和方法。 3. Linux的基本操作。
4. 掌握Linux下的程序编译与交叉编译过程。 [基础知识]
Linux操作系统从一开始就对串行口提供了很好的支持,为进行串行通信提供了大量的函数,本试验主要是为掌握在Linux中进行串行通信编程的基本方法。
1、 串口编程相关头文件
#include
在Linux下,串口文件位于/dev下,串口1为/dev/ttyS0,串口2为/dev/ttyS1,打开串口是通过使用标准的文件打开函数操作:
Intfd;
/*以读/写方式打开串口*/
fd=open(”/dev/ttyS0”, 0_RDWR); if(-1==fd) { perror(“error“); }
3、 设置串口
最基本的设置串口包括波特率设置,效验位和停止位设置。串口的设置struct termios结构体的成员值。
struct termio{
unsigned short c_iflag; /*输入模式标志*/ unsigned short c_oflag; /*输出模式标志/
17
unsigned short c_cflag; /*控制模式标志*/ unsigned short c_lflag; /*local mode flags*/ unsigned char c_line; /*line discipline*/ unsigned char c_cc[NCC]; /*control characters*/ };
(1)波特率设置
下面是修改波特率的代码: struct termios Opt; tcgetattr(fd,&Opt);
cfsetispeed(&Opt,B19200); /*设置为192 000 bps*/ cfsetospeed(&Opt,B19200); tcsetattr(fd,TCANOW,&Opt); (2)校验位的设置 无效验8位:
Option.c_cflag &=~PARENB; Option.c_cflag &=~CSTOPB Option.c_cflag &=~CSIZE; Option.c_cflag |=~CS8; 奇效验(Odd)7位:
Option.c_cflag |=~PARENB; Option.c_cflag &=~PARODD; Option.c_cflag &=~CSTOPB Option.c_cflag &=~CSIZE; Option.c_cflag |=~CS7; 偶效验(Even)7位:
Option.c_cflag &=~PARENB; Option.c_cflag |=~PARODD; Option.c_cflag &=~CSTOPB Option.c_cflag &=~CSIZE; Option.c_cflag |=~CS7; Space效验7位:
Option.c_cflag &=~PARENB; Option.c_cflag &=~CSTOPB Option.c_cflag &=&~CSIZE; Option.c_cflag |=~CS8; (3)设置停止位 1位:
Options.c_cflag &=~CSTOPB; 2位:
Options.c_cflag |=~CSTOPB;
需要注意的是,如果不是开发终端之类,只是串口传输数据,从而不需要串口来处理,那么使用原始模式(Raw Mode)方式来通信,设置方式如下:
Options.c_cflag &=~(ICANON|ECHO|ECHOE|ISIG); /*Input*/ Options.c_oflag &=~OPOST; /*Output*/
(4)读/写串口
设置好串口之后,读/写串口变得很容易,就可以把串口当作文件读/写了。 发送数据:
char buffer[1024]; int Length=1024; int nByte;
nByte=write(fd,buffer,Length);
读取串口数据使用文件操作read函数读取,如果设置为原始模式(Raw Mode)传输数据,那么read函数返回的字符数是实际串口收到的字符数。可以使用操作文件的函数来实现异步读取,如fcntl或者select等来操作。
char buffer[1024]; int Len=1024;
int readByte=read(fd,buffer,Len); (5)关闭串口
关闭产口就是关闭文件。 4、实验程序流程图
实验程序流程图如图所示。
main 打开串口 设置波特率 设置效验位和停止位 从串口读数据 打印从串口读到的数据 结束
[实验步骤]
1、 建立工作目录。 $cd /
$mkdir serial $cd serial
2、 编写serial程序源代码。参照程序流程图编写串口通信程序,从串口接受数据,并将接
收到的数据打印出来。 3、 编写Makefile文件。 4、 编译serial程序。
19
$make clean
$make正确的话,将生成serial程序。 5、运行serial程序。 $./serial
6、修改Makefile文件。(使用arm-linux-gcc编译器) $make clean
$make重新编译,将生成在arm平台上运行的serial程序。 $cp serial /tftpboot/挂接目录
5、 启动目标机Linux,并挂接主机。下载serial程序到JXARM9-2410中调试。 #mount 192.168.1.180:/tftpboot/挂接目录 /mnt/nfs/ #cd /mnt/nfs/挂接目录 #./serial
[实验报告要求]
1、实验报告包括实验目的、实验内容、实验步骤、实验结果和实验小结。 2、写出serial程序源码、实验过程和实验结果(可使用贴图)。