赞
踩
上面我们已经编译出mini2440开发板运行SylixOS操作系统的镜像,为了让没有mini2440开发板的朋友也能尝鲜,我们提供了
Qemu for mini2440虚拟机。
该虚拟机位于D:\sylixos_workspace\qemu-mini2440目录,首次使用该虚拟机,需要如下进行如下两个步骤的操作:
1. 生成Nand Flash镜像文件
执行nandCreator.exe,执行完成后,会在当前目录生成一个名为nand.bin的Nand Flash镜像文件。
2. 增加虚拟网卡
执行addtap.bat批处理文件,以增加虚拟网卡(可以执行deltapall.bat批处理文件将所有的虚拟网卡删除,
如果你有其它虚拟网卡,请不要执行它!)。
将新增的虚拟网卡的名字重命名为virtual(由上图可以看到新增的虚拟网卡是TAP-win32 Adapter V9),
将它的IP设为192.168.7.XX(必须要和SylixOS目标板的IP同一个网段),将子网掩码设为255.255.255.0。
mini2440_run.bat的内容如下:
- start qemu-system-arm.exe -M mini2440 -show-cursor -kernel ../bspmini2440/Debug/bspmini2440.bin -serial
- telnet:127.0.0.1:1200,server -mtdblock nand.bin -serial file:virtualkbd -net nic -net tap,ifname=virtual,vlan=1
- start putty.exe telnet://127.0.0.1:1200/
可以看到它首先启动了Qemu虚拟机的可执行程序qemu-system-arm.exe,通过参数指定了module为mini2440开发板,
指定了kernel镜像为../bspmini2440/Debug/bspmini2440.bin,指定了串口为telnet服务器:127.0.0.1:1200,
指定了网卡的接口名为virtual,指定了Nand Flash镜像文件为nand.bin。
之后启动了终端软件putty.exe,通过参数让putty连接telnet://127.0.0.1:1200/,即连接到mini2440开发板的串口。
执行mini2440_run.bat,稍等数秒SylixOS系统将启动起来并进入到控制台:
在控制台下输入命令:
ifconfig
可以查看或配置SylixOS目标板的网络接口,输入该命令,我们得知SylixOS目标板的en1网络接口的IP地址为192.168.7.30。
SylixOS操作系统内建了一个FTP服务器,只要PC机安装FTP客户端就能连接上SylixOS目标板的FTP服务器,就可以很方便地通过
FTP客户端向目标板传输文件,如应用程序可执行文件等。
如果你的PC机操作系统是windows,建议安装filezilla FTP客户端,它的官网地址为 https://filezilla-project.org/
安装完成后,打开filezilla,务必将传输类型修改为二进制,点击“传输 -> 传输类型 -> 二进制”菜单:
然后新建一如下的FTP站点,IP地址为SylixOS目标板的IP地址(如上面的192.168.7.30),端口号为21,用户名和密码均为root:
建议重命名该FTP站点的名称为IP地址,即192.168.7.30,以方便区分。
点击“连接”按钮即可连接到SylixOS目标板的FTP服务器:
将本地磁盘路径切换到 D:\sylixos_workspace\examples\hello_world\Debug\ 目录,
可以看到该目录有我们之前编译应用程序示例工程hello_world生成的应用程序可执行文件hello_world,
将其拖动到右侧的SylixOS目标板文件列表的/apps目录,即可将其传输到SylixOS目标板的/apps目录。
应用程序可执行文件hello_world运行时还依赖于进程补丁libvpmpdm.so(位于D:\sylixos_workspace\sylixos-base\libsylixos\Debug目录),
将libvpmpdm.so拖动到右侧的SylixOS目标板文件列表的/lib目录,即可将其传输到SylixOS目标板的/lib目录。
在控制台下输入命令 cd /apps 以进入 /apps 目录,再输入命令 ./hello_world 即可执行应用程序hello_world:
- [root@sylixos_station:/]# cd /apps/
- [root@sylixos_station:/apps]# ./hello_world
- hello world (base on sylixos)!
将本地磁盘路径切换到D:\sylixos_workspace\examples\hello_module\Debug\目录,
可以看到该目录有我们之前编译内核模块示例工程hello_module生成内核模块文件hello_module.ko,
将其拖动到右侧的SylixOS目标板文件列表的/lib/modules目录,即可将其传输到SylixOS目标板的/lib/modules目录。
在控制台下输入命令 cd /lib/modules 以进入 /lib/modules 目录,再输入命令 modulereg hello_module.ko 即可插入
内核模块文件hello_module.ko进内核:
- [root@sylixos_station:/apps]# cd /lib/modules/
- [root@sylixos_station:/lib/modules]# modulereg hello_module.ko
- hello_module init!
- module hello_module.ko register ok, handle : 0x30c5da78
在控制台下输入命令 modules 即可查看当前内核插入的内核模块:
- [root@sylixos_station:/lib/modules]# modules
-
- NAME HANDLE TYPE GLB BASE SIZE SYMCNT
- ------------------------------ -------- ------ --- -------- -------- --------
- VPROCESS: kernel pid: 0 TOTAL MEMORY: 8192
- + hello_module.ko 30c5da78 KERNEL YES c00d1000 c4 2
-
- total modules : 1
关闭上面的Qemu虚拟机程序。
先选中bspmini2440工程,然后点击调试工具栏 的臭虫图标的下拉的Debug Configurations…菜单,将弹出如下的调试配置对话框:
双击Zylin Embedded debug(Native),将增加一个名为bspmini2440 Default的实例:
切换到Debugger选项卡,将GDB Debugger修改为
arm-none-eabi-gdb
将Stop on startup at修改为
reset
切换到Commands选项卡,将Initalize commands修改为如下的内容:
- target remote localhost:1234
- load
最后点击Apply按钮应用修改,点击Debug按钮开始调试。
mini2440_debug.bat的内容如下:
- start qemu-system-arm.exe -s -S -M mini2440 -show-cursor -serial telnet:127.0.0.1:1200,server
- -mtdblock nand.bin -serial file:virtualkbd -net nic -net tap,ifname=virtual
- start putty.exe telnet://127.0.0.1:1200/
mini2440_debug.bat和mini2440_run.bat的区别在于mini2440_debug.bat并没有指定kernel镜像文件(依靠上面的 load 命令下载 kernel),但增加 -s -S 选项。
执行mini2440_debug.bat批处理文件,如果出现如下的windows安全警报,请点击允许访问按钮。
稍等数秒,Eclipse将控制arm-none-eabi-gdb连接到Qemu虚拟机,并将SylixOS的相关节区section加载到mini2440开发板内存的相应位置:
- target remote localhost:1234
- Remote debugging using localhost:1234
- 0x00000000 in ?? ()
- load
- Loading section .text, size 0x32f6fc lma 0x30000000
- Loading section .ARM.exidx, size 0x8 lma 0x3032f6fc
- Loading section .ctors, size 0x8 lma 0x3032f704
- Loading section .dtors, size 0x8 lma 0x3032f70c
- Loading section .data, size 0x282cc lma 0x3032f714
- Start address 0x30000000, load size 3504608
- Transfer rate: 497 KB/sec, 2028 bytes/write.
现在你可以通过图形化的方式调试SylixOS系统了:
如果您需要使用硬件调试器(如J-Link edu)调试真实的mini2440开发板。
先使用JTAG连接线和JTAG转接板连接J-Link到mini2440开发板的JTAG接口,然后打开J-Link GDB Server软件。
目标设备Target device选择Samsung公司的S3C2440A芯片,并选择小端Little endian。
目标接口Target interface选择JTAG。
速度Speed选择自动选择Auto selection,如下图:
最后,点击OK按钮,J-Link GDB Server将开始工作:
将bspmini2440/S3C2440.gdbinit文件的内容复制到bspmini2440 Default调试实例的Commands选项卡的Initalize commands内,如下图:
bspmini2440/S3C2440.gdbinit文件的内容如下:
- #connect to J-Link GDB Server
- target remote localhost:2331
-
- #reset target
- monitor reset
-
- #select endian
- monitor endian little
-
- #initialize memory controler
- monitor long 0x53000000 = 0x00000000
- monitor long 0x4a000008 = 0xFFFFFFFF
- monitor long 0x4a00001c = 0x00007FFF
- monitor long 0x4c000000 = 0x00FFFFFF
- monitor long 0x4c000014 = 0x00000005
- monitor long 0x4c000004 = 0x0007F021
- monitor long 0x48000000 = 0x12111110
- monitor long 0x48000004 = 0x00000700
- monitor long 0x48000008 = 0x00000700
- monitor long 0x4800000c = 0x00000700
- monitor long 0x48000010 = 0x00000700
- monitor long 0x48000014 = 0x00000700
- monitor long 0x48000018 = 0x00000700
- monitor long 0x4800001c = 0x00018005
- monitor long 0x48000020 = 0x00018005
- monitor long 0x48000024 = 0x009804EC
- monitor long 0x48000028 = 0x000000B2
- monitor long 0x4800002c = 0x00000030
- monitor long 0x48000030 = 0x00000030
-
- #wait for moment
- monitor sleep 20
-
- #load the debug image
- load
-
- #set cpu to svc mode(on cpu reset)
- monitor reg cpsr = 0xd3
-
- #debug in ram
- monitor reg pc = 0x30000000
-
- #debug begin
最后,点击Debug按钮开始调试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。