1、 目 录 1 环境的搭建 5 1.1 VMware Workstation 5 1.2 超级终端 5 1.3 XShell 5 1.3.1 连接ARM开发板 5 1.3.2 连接虚拟机(XP的本地连接可用时) 6 1.3.3 连接虚拟机(XP的本地连接不可用时) 6 1.3.4 XShell其他配置 6 1.4 Source Insight 6 1.5 虚拟机Samba服务器:将虚拟机中的文件夹共享给XP 7 1.6 将XP中的文件夹共享给虚拟机 7 1.7 NFS共享:将虚拟机中的文件夹共享给ARM开发板 7 2 Linux程序设计基础 8 2.1 在
2、虚拟机上编辑、编译和运行程序 8 2.2 交叉编译(在虚拟机上编译ARM开发板上可运行的程序) 9 3 U-BOOT移植实验 10 3.1 解压u-boot源码 10 3.2 建立UP2410的板级支持 10 3.3 让up2410的u-boot支持从Nand Flash启动 10 3.4 让up2410的u-boot支持dm9000网卡 14 3.5 编译up2410的u-boot 16 3.6 烧写u-boot 16 3.7 测试u-boot 16 4 LINUX内核移植实验 17 4.1 资源 17 4.2 解压源码包 17 4.3 修改Makefile文件,支
3、持交叉编译 17 4.4 得到.config文件 17 4.5 修改Nand Flash分区 17 4.6 添加LCD支持 18 4.7 添加网卡驱动 19 4.8 添加YAFFS文件系统支持 20 4.9 内核配置(即内核裁剪) 20 4.10 编译内核 21 4.11 烧写内核 21 5 根文件系统的制作 23 5.1 解压busybox 23 5.2 修改Makefile文件,支持交叉编译 23 5.3 编译 23 5.4 创建根文件系统的目录结构 23 5.5 得到etc文件夹内容 24 5.6 复制_install文件夹内容 26 5.7 拷贝动态库
4、26 5.8 制作cramfs的文件系统 26 5.8 烧写文件系统 27 5.9 重设ARM开发板启动参数 27 6 模块驱动实验 28 6.1 编辑模块驱动程序demo.c和用户测试程序test_demo.c 28 6.2 编译和测试驱动程序(基于Linux虚拟机的驱动程序) 28 6.2.1 编译Linux虚拟机上的目标文件 28 6.2.2 在Linux虚拟机上插入设备驱动、建立设备节点 29 6.2.3 在Linux虚拟机上运行测试程序 29 6.3 交叉编译和测试驱动程序(基于ARM开发板的驱动程序) 29 6.3.1 编译ARM开发板上的目标文件 29 6
5、3.2 在ARM开发板上插入设备驱动、建立设备节点 29 6.3.3 在ARM开发板上运行测试程序 30 6.4 程序源码 30 6.4.1 demo.c 30 6.4.2 test_demo.c 33 7 A/D转换实验 35 7.1 重新编译和烧写内核 35 7.2 编辑驱动程序和用户测试程序 35 7.3 编译生成目标文件 35 7.4 将目标文件传到ARM开发板 35 7.5 驱动 36 7.6 测试 36 7.7 程序源码 36 7.7.1 s3c2410_adc.h 36 7.7.2 s3c2410_adc.c 36 7.7.3 main.c 40
6、 8 socket编程实验 42 8.1 demo1(假设Linux虚拟机是服务器,ARM开发板是客户端) 42 8.1.1 编辑skt_ser.c和skt_cli.c 42 8.1.2 编译 42 8.1.3 将客户端目标程序skt_cli传到ARM开发板 42 8.1.4 运行 42 8.2 demo2(假设ARM开发板是服务器,Linux虚拟机是客户端) 43 8.2.1 编辑server.c和client.c 43 8.2.2 编译 43 8.2.3 将服务器端目标程序server传到ARM开发板 43 8.2.4 运行 43 8.3 程序源码 43 8.3.1
7、 skt_ser.c 43 8.3.2 ske_cli.c 45 8.3.3 server.c 46 8.3.4 client.c 47 9 帧缓冲驱动实验 49 10 触摸屏驱动实验 50 10.1 得到tslib源码 50 10.2 生成可执行文件 50 10.3 将触摸屏库挂载到arm开发板 50 10.4 加载触摸屏驱动 51 10.5 设置环境变量 51 10.6 触摸屏校准和测试 51 11 WEB实验 52 11.1 运行原理 52 11.2 编辑和编译程序 52 11.2.1 编辑源程序 52 11.2.2 编译 52 11.3 加载ADC驱动
8、 52 11.4 得到WEB服务器boa 52 11.5 配置boa服务器 53 11.6 程序源码 53 12 视频实验 60 12.1 压缩包简介 60 12.2 解压并编译jpeg标准库 60 12.3 运行一个图像显示应用程序jpegshow 61 12.4 运行一个抓图应用程序mouse_capture 61 12.5 修改后再运行mouse_capture 62 12.6 更新jpeg标准库 62 12.7 运行一个抓图显示应用程序v4lcap 63 12.8 配置网络摄像头和WEB服务器 64 12.9 程序源码 65 12.9.1 jpegshow中
9、的main.c 65 12.9.2 jpegshow中的fb.h 66 12.9.3 jpegshow中的fb.c 67 12.9.4 mouse_capture中的server.c 68 12.9.5 mouse_capture中的run.sh 70 13 QT实验(For Linux) 71 13.1 编译QT-X11环境 71 13.2 编写QT-X11程序 71 13.3 编译、执行 71 13.4 程序源码 72 13.4.1 myqt.h 72 13.4.2 myqt.cpp 72 13.4.3 main.cpp 73 14 QT实验(For ARM) 7
10、4 14.1 挂载触摸屏库 74 14.2 编译和配置QT/E环境 74 14.3 驱动触摸屏 75 14.4 利用QT-X11的designer编写应用程序界面 75 14.5 在QT/E环境中编译 75 14.6 在ARM开发板上测试 76 15 GPRS实验 77 15.1 重新编译arm开发板的linux内核 77 15.2 将触摸屏库和QT/E库挂载到arm开发板 77 15.3 驱动触摸屏、设置环境变量、触摸屏校准 77 15.4 生成一个手机的应用程序 78 15.5 在ARM开发板上测试 78 15.6 程序源码 78 15.6.1 gprs.h 7
11、8 15.6.2 gprs.cpp 80 15.6.3 main.cpp 86 16 考核 88 16.1 过程简介 88 16.2 程序源码 89 16.2.1 led.c 89 16.2.2 myled.h 93 16.2.3 myled.cpp 93 16.2.4 main.cpp 95 7 UP2410 1 环境的搭建 1 环境的搭建 1.1 VMware Workstation
12、 (用于启动RedHat9 linux虚拟机) 1. 启动:双击redhat.vmx 2. 配置:打开菜单“虚拟机à设置” 硬件: (1)内存:256M(不能大于本机内存的1/3) (2)以太网:选择“桥接” (3)串口:选择“COM1”,不要选择“打开电源连接” 选项: (1)文件夹共享:选择“总是启用” 共享后的文件夹在“/mnt/hgfs”文件夹内可见 3. 第一次使用时,点击“打开虚拟机电源”后会有提示,“确定”即可。用户名“root”,密码“123456”。 1.2 超级终端 1. 启动:开始à程序à附件à通讯à超级终端 2. 是否将HyperTerminal
13、作为默认的telnet程序?“否” 3. 位置信息窗口。“取消” 4. 需要拨号位置的电话信息,确实要取消吗?“是”“确定” 5. 为新的连接取名:“ttyS0”(随便取) 6. 连接实验箱的串口:“COM1” 7. 端口设置(即串口COM1的设置) 串口波特率115200;数据位8;奇偶校验“无”;停止位1;数据流控制“无”。 8. 进入vivi启动界面。“文件à另存为”保存该连接设置。 1.3 XShell 1.3.1 连接ARM开发板 1. 超级终端、虚拟机、其他占用COM1的软件全部关闭,否则无法连接ARM开发板。 2. 启动:双击“XShell” 3. 点击
14、左上角图标,新建会话连接ARM开发板。 Name:arm Method:SERIAL setup(波特率=115200,Port=COM1,Data Bits=8,Stop Bits=1,Parity=None) 4. 选中“arm”,点击“connect”。 5. 此时已经连接上ARM开发板了,可以使用XShell与之进行交互了,如果有问题可以重新启动ARM开发板。 1.3.2 连接虚拟机(XP的本地连接可用时) 1. XP的本地IP地址192.168.1.11;子网掩码255.255.255.0;默认网关192.168.1.254 VMware Network Adapt
15、er VMnet1 自动获得IP地址 VMware Network Adapter VMnet8 自动获得IP地址 2. Linux虚拟机内运行命令ifconfig,查看虚拟机网络设置 IP地址192.168.1.12;子网掩码255.255.255.0;默认网关192.168.1.254 3. 启动XShell后,点击左上角图标,新建一个会话连接虚拟机。 Name:redhat(可以任意取名) Method:SSH Host:192.168.1.12(与Linux虚拟机的IP地址一致即可) Port Number:22 Method:Password User Name
16、root Password:123456 4. 选中“redhat”,点“connect”,选择“Accept&Save” 5. 此时已经连接上Linux虚拟机了,可以使用XShell访问Linux系统了。 1.3.3 连接虚拟机(XP的本地连接不可用时) 1. XP的本地IP地址192.168.1.11;子网掩码255.255.255.0;默认网关192.168.1.254 VMnet1本地IP地址192.168.1.15;子网掩码255.255.255.0;默认网关192.168.1.254 VMnet8自动获得IP地址 2-5同上 1.3.4 XShell其他配置
17、 1. 背景方案图标中可选择“白底黑字”或“黑底白字”等。 2. 中文乱码的解决:配置图标中选择“Advanced”à“utf8中文简体” 字体选择“仿宋” 1.4 Source Insight 1. 启动:双击“Insight3.exe” 2. “项目”à“新项目”。名称任意,存储路径最好与源代码在同一目录。 3. 共享全局配置文件 4. “项目源文件目录”右侧点击“浏览” 5. 选择要编辑的源码所在目录后,点击“添加树”,“关闭”即可。 6. 默认情况下,不能阅读汇编文件,解决办法:“选项”à“文档选项”,在文件过滤器中输入“*.c;*.h;*.s;*.S”,选
18、中“加入到项目时包含”,点击“关闭”即可。 7. 在菜单中选择“项目”à“同步文件”,选中“自动加入新文件”和“禁止警告信息”,同步后新的汇编代码就会自动添加到我们的工程里了。 1.5 虚拟机Samba服务器:将虚拟机中的文件夹共享给XP 1. 启动linux虚拟机,进入home文件夹(cd /home),创建uptech文件夹(mkdir uptech)。 2. 改变uptech文件夹的权限(chmod 777 uptech/)。任何用户可读可写可执行。 3. 在虚拟机的红帽菜单中“系统设置”à“服务器设置”à“samba” 4. 在Samba服务器配置中点击“添加”图标,来添加
19、共享文件夹的名称。 (1)目录:“/home/uptech” (2)共享名:“uptech” (3)权限:“读/写” (4)访问:选中“允许所有用户访问” 5. 在XP的地址栏中输入“//192.168.1.12”即可访问Linux虚拟机的“/home/uptech”了。 1.6 将XP中的文件夹共享给虚拟机 1. 在虚拟机菜单中选择“虚拟机à设置” 2. 选择“选项”à“文件夹共享”:选择“总是启用”,可以添加想要共享的文件夹。 3. 此时,XP的共享文件夹在linux的“/mnt/hgfs”文件夹内可见。 1.7 NFS共享:将虚拟机中的文件夹共享给ARM开发板
20、 1. 确保XP、linux虚拟机、ARM开发板三者的IP地址在同一网段,并且不冲突,能够互相ping通。 2. 在虚拟机中配置NFS:“系统设置”à“服务器设置”à“NFS”,点击“添加”图标 (1)目录:/home/uptech (任意,选择要共享给ARM开发板的目录) (2)目录主机:* (3)权限:读/写 (4)常规选项中选中“允许来自高于1024的端口的连接”和“按要求同步写操作” (5)用户访问中选中“把远程根用户当作本地根用户” 3. 在Linux虚拟机中输入命令“route del default”,取消虚拟机的默认路由。 4. 在ARM开发板上操作
21、如下: (1)ifconfig eth0 192.168.1.13 (配置ARM开发板的IP地址) (2)mount –o nolock,rsize=4096,wsize=4096 192.168.1.12:/home/uptech /mnt/nfs (将linux虚拟机 /home/uptech 目录挂载到ARM开发板的/mnt/nfs目录下) (3)cd /mnt/nfs (即可访问Linux共享的文件夹) UP2410
22、 2 Linux程序设计基础 2 Linux程序设计基础 2.1 在虚拟机上编辑、编译和运行程序 1. 启动Linux 2. 进入需要存放程序文件的文件夹“cd /home/uptech/……” 3. 编辑:vi 文件名。例如:“vi starfun.h”、“vi hello.h”、“vi hello.c”、“vi star.c” 编辑完每个文件后,使用ESC,shift+z+z保存退出 使用ESC,:w 保存文件 使用ESC,:q! 退出 (1)Starfun.h 文件内容如下: /*****starfun.h*****/ #ifndef STA
23、RFUN_H #define STARFUN_H #define NUM 4 #define NUMBER 3 int star1() { int i,j,k; for(k=1;k<=NUM;++k) { for(i=1;i<=(NUM-k);++i) printf(" "); for(j=1;j<=(2*k-1);++j) printf("*"); printf("\n"); } return 0; } int star2() { int i,j,k; for(k=NUMBER;k>=0;--k)
24、{ for(i=1;i<=(NUMBER-k+1);++i) printf(" "); for(j=1;j<=(2*k-1);++j) printf("*"); printf("\n"); } return 0; } #endif (2)hello.h文件内容如下: /*hello.h*/ #ifndef HELLO_H #define HELLO_H void hello() { star1(); printf("hello,my friends\n"); } #endif (3)h
25、ello.c 文件内容如下:
void showhello() {
hello();
}
(4)star.c文件内容如下:
#include "starfun.h"
#include "hello.h"
#include
26、 hello.c+hello.h+starfun.h生成hello.o (3)gcc star.o hello.o -o myprog hello.o+star.o生成应用程序myprog 编译(一步编译)star.c+hello.c+hello.h+starfun.h生成应用程序myprog gcc star.c hello.c -o myprog 5. 运行程序:“./myprog” (这个程序只能在Linux虚拟机中运行,不能在ARM中运行) 2.2 交叉编译(在虚拟机上编译ARM开发板上可运行的程序) 1. 在linux中编译生成ARM开发板上运行的程序: ar
27、m-linux-gcc star.c hello.c -o myprog 2. 将目标文件myprog传到ARM开发板: (1)在Linux虚拟机中将目标文件拷贝到tftpboot文件夹:cp myprog /tftpboot (2)在ARM上执行“tftp –r myprog –g 192.168.1.12” (3)在ARM开发板上修改myprog的权限: “chmod 777 myprog”或“chmod +x myprog” 3. 在ARM开发板上运行程序:“./myprog” 88 UP2410
28、 3 U-BOOT移植实验 3 U-BOOT移植实验 3.1 解压u-boot源码 1. 在虚拟机中,利用Samba共享一个文件夹给XP,例如共享“/home/uptech”文件夹 2. 将该文件夹的权限设为可读可写可执行“chmod 777 /home/uptech” 3. 在XP中,把“03/下午/src”文件夹拷贝到“//192.168.1.12”的共享文件夹uptech内,并把uptech中的“src”更名为“03 u-boot” 4. 在Linux虚拟机中进入该文件夹“cd
29、 /home/uptech/03 u-boot” 输入“ls”命令,可见该文件夹内有3个文件: “u-boot-1.3.2.tar.bz2” (u-boot-1.3.2源码压缩包) “dm9000x.h”、“dm9000x.c” (dm9000网卡驱动程序) 5. 解压u-boot源码压缩包,即输入命令“tar jxvf u-boot-1.3.2.tar.bz2” 3.2 建立UP2410的板级支持 1. 进入u-boot源码文件夹,输入命令“cd u-boot-1.3.2” 2. 建立UP2410板级支持包 “cd board” “mkdir up2410”
30、 在board文件夹内创建“up2410”文件夹 “cp smdk2410/* up2410/ -a” 将smdk2410文件夹的内容拷贝到up2410文件夹内 “cd ..” 返回u-boot-1.3.2目录 “cp include/config/smdk2410.h include/config/up2410.h” 以smdk2410为模板创建up2410配置文件up2410.h 3. 配置UP2410开发板,即修改“u-boot-1.3.2/Makefile”文件 “vi Makefile” 输入“/smdk2410”找到 smdk2400_confi
31、g : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 NULL s3c24x0 紧接这两行添加如下两行: up2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t up2410 NULL s3c24x0 其中第二行开始部分的空白是按TAB键获得的! 4. 保存退出Makefile文件。 ESC, shift+z z 3.3 让up2410的u-boot支持从Nand Flash启动 1. 修改“u-boot-1.3.2/cpu/arm920
32、t/start.S”文件 2. 新建“u-boot-1.3.2/ board/up2410/nand.c”文件 3. 修改“u-boot-1.3.2/board/up2410/Makefile”文件 4. 修改“u-boot-1.3.2/include/configs/up2410.h”文件 具体如下: 1、修改“u-boot-1.3.2/cpu/arm920t/start.S”文件(vi cpu/arm920t/start.S) ESC :set number (用于显示行号) (1)181行和201行前加上//,注释掉 181 //#ifdef CONFIG
33、AT91RM9200 201 //#endif (2)203行(即#ifndef CONFIG_SKIP_RELOCATE_UBOOT之后)加入: #ifdef CONFIG_S3C2410_NAND_BOOT bl copy_myself #else (3)“ble copy_loop”语句之后加入: #endif (4)“_start_armboot: .word start_armboot”语句之后加入copy_loop子程序: /* ***************************************************************
34、 * * copy u-boot to ram * ************************************************************************* */ #ifdef CONFIG_S3C2410_NAND_BOOT copy_myself: mov r10, lr @save return address to r10 ldr sp, DW_STACK_START mov fp, #0 bl NF_In
35、it ldr r0, =UBOOT_RAM_BASE mov r1, #0x0 mov r2, #0x30000 bl nand_read_whole tst r0, #0x0 beq ok_nand_read 1: b 1b ok_nand_read: mov r0, #0x00000000 ldr r1, =UBOOT_RAM_BASE mov r2, #0x400 go_next: ldr r3, [r0], #4 ldr r4,
36、[r1], #4 teq r3, r4 bne notmatch subs r2, r2, #4 beq done_nand_read bne go_next notmatch: 1: b 1b done_nand_read: mov pc, r10 #endif DW_STACK_START: .word STACK_BASE+STACK_SIZE-4 2、新建“u-boot-1.3.2/ board/up2410/nand.c”文件(vi board/up2410/na
37、nd.c)
#include
38、); NF_WAITRB(); NF_nFCE_H(); } void NF_Init(void) { rNFCONF=(1<<15)|(1<<14)|(1<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0); NF_Reset(); } int nand_read_whole(unsigned char *buf, unsigned long start_addr, int size) { int i, j; if((start_addr & NAND_BLOCK_MASK) || (size & N
39、AND_BLOCK_MASK)) return 1; NF_nFCE_L(); for(i=0; i<10; i++); i = start_addr; while(i < start_addr + size) { rNFCMD = 0; rNFADDR = i & 0xff; rNFADDR = (i >> 9) & 0xff; rNFADDR = (i >> 17) & 0xff; rNFADDR = (i >> 25) & 0xff; NF_WAITRB(); for(j=0; j < NAND_SECTOR_SIZE; j++, i++) { *buf
40、 (rNFDATA & 0xff); buf++; } } NF_nFCE_H(); return 0; } 3、修改“u-boot-1.3.2/board/up2410/Makefile”文件(vi board/up2410/Makefile) 将“COBJS:= smdk2410.o flash.o”改为“COBJS:=smdk2410.o flash.o nand.o” 4、修改“u-boot-1.3.2/include/configs/up2410.h”文件(vi include/configs/up2410.h) 在文件的最后一个#endif的前面添加如下内容
41、 #define CONFIG_S3C2410_NAND_BOOT 1 #define STACK_BASE 0x33f00000 #define STACK_SIZE 0x8000 #define UBOOT_RAM_BASE 0x33f80000 #define CFG_NAND_BASE 0x4E000000 #define CFG_MAX_NAND_DEVICE 1 #define SECTORSIZE 512 #define NAND_SECTOR_SIZE SECTORSIZE #define NAND_BLOCK_MASK (NA
42、ND_SECTOR_SIZE - 1) #define ADDR_COLUMN 1 #define ADDR_PAGE 2 #define ADDR_COLUMN_PAGE 3 #define NAND_ChipID_UNKNOWN 0x00 #define NAND_MAX_FLOORS 1 #define NAND_MAX_CHIPS 1 #define WRITE_NAND_COMMAND(d, adr) do {rNFCMD = d;} while(0) #define WRITE_NAND_ADDRESS(d, adr) do {rNFADDR = d;} wh
43、ile(0) #define WRITE_NAND(d, adr) do {rNFDATA = d;} while(0) #define READ_NAND(adr) (rNFDATA) #define NAND_WAIT_READY(nand) {while(!(rNFSTAT&(1<<0)));} #define NAND_DISABLE_CE(nand) {rNFCONF |= (1<<11);} #define NAND_ENABLE_CE(nand) {rNFCONF &= ~(1<<11);} #define NAND_CTL_CLRALE(nandptr) #d
44、efine NAND_CTL_SETALE(nandptr) #define NAND_CTL_CLRCLE(nandptr) #define NAND_CTL_SETCLE(nandptr) #define CONFIG_MTD_NAND_VERIFY_WRITE 1 #define rNFCONF (*(volatile unsigned int *)0x4e000000) #define rNFCMD (*(volatile unsigned char *)0x4e000004) #define rNFADDR (*(volatile unsigned char *)
45、0x4e000008) #define rNFDATA (*(volatile unsigned char *)0x4e00000c) #define rNFSTAT (*(volatile unsigned int *)0x4e000010) #define rNFECC (*(volatile unsigned int *)0x4e000014) #define rNFECC0 (*(volatile unsigned char *)0x4e000014) #define rNFECC1 (*(volatile unsigned char *)0x4e000015) #defi
46、ne rNFECC2 (*(volatile unsigned char *)0x4e000016) #define NF_CMD(cmd) {rNFCMD=cmd;} #define NF_ADDR(addr) {rNFADDR=addr;} #define NF_nFCE_L() {rNFCONF&=~(1<<11);} #define NF_nFCE_H() {rNFCONF|=(1<<11);} #define NF_RSTECC() {rNFCONF|=(1<<12);} #define NF_RDDATA() (rNFDATA) #define NF_WRDATA
47、data) {rNFDATA=data;} #define NF_WAITRB() {while(!(rNFSTAT&(1<<0)));} 3.4 让up2410的u-boot支持dm9000网卡 1. 将“/home/uptech/03 u-boot/dm9000x.h”和“/home/uptech/03 u-boot/dm9000x.c”拷贝到“u-boot-1.3.2/drivers/net”文件夹内 cp /home/uptech/03 u-boot/dm9000x.* drivers/net/ 2. 修改“u-boot-1.3.2/include/configs/up
48、2410.h”文件(vi include/configs/up2410.h) (1)将原网卡“CS8900”改为“DM9000” (2)添加网络命令 (3)修改IP地址 (4)修改命令提示符 (5)修改默认下载地址 (6)修改环境变量在Nand Flash中的存储地址 具体如下: (1)将原网卡“CS8900”改为“DM9000” 注释掉: // #define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */ // #define CS8900_BASE 0x19000
49、300 // #define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */ 这3行之后添加: #define CONFIG_DRIVER_DM9000 1 #define CONFIG_DRIVER_DM9000_BASE 0x10000000 #define DM9000_IO CONFIG_DM9000_BASE #define DM9000_DATA (DM9000_IO + 2) #define CONFIG_DM9000_USE_16BIT (2)添加网络命令 找到
50、下面的几行: #define CONFIG_CMD_CACHE #define CONFIG_CMD_DATE #define CONFIG_CMD_ELF 在其下面添加下面几行: #define CONFIG_CMD_REGINFO #define CONFIG_CMD_NAND #define CONFIG_CMD_PING #define CONFIG_CMD_DLF #define CONFIG_CMD_ENV #define CONFIG_CMD_NET (3)修改IP地址 找到下面几行: #define CONFIG_BOOTDELAY 3






