当前位置:   article > 正文

运行SylixOS_libvpmpdm.so

libvpmpdm.so

运行SylixOS操作系统

上面我们已经编译出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批处理文件将所有的虚拟网卡删除,

如果你有其它虚拟网卡,请不要执行它!)。

Sylixide tapinstall.png

将新增的虚拟网卡的名字重命名为virtual(由上图可以看到新增的虚拟网卡是TAP-win32 Adapter V9),

将它的IP设为192.168.7.XX(必须要和SylixOS目标板的IP同一个网段),将子网掩码设为255.255.255.0。

Sylixide ipconfig.png

mini2440_run.bat的内容如下:

  1. start qemu-system-arm.exe -M mini2440 -show-cursor -kernel ../bspmini2440/Debug/bspmini2440.bin -serial
  2. telnet:127.0.0.1:1200,server -mtdblock nand.bin -serial file:virtualkbd -net nic -net tap,ifname=virtual,vlan=1
  3. 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系统将启动起来并进入到控制台:

Sylixide console.png

在控制台下输入命令:

ifconfig

可以查看或配置SylixOS目标板的网络接口,输入该命令,我们得知SylixOS目标板的en1网络接口的IP地址为192.168.7.30。


运行SylixOS应用程序

SylixOS操作系统内建了一个FTP服务器,只要PC机安装FTP客户端就能连接上SylixOS目标板的FTP服务器,就可以很方便地通过

FTP客户端向目标板传输文件,如应用程序可执行文件等。

如果你的PC机操作系统是windows,建议安装filezilla FTP客户端,它的官网地址为 https://filezilla-project.org/

安装完成后,打开filezilla,务必将传输类型修改为二进制,点击“传输 -> 传输类型 -> 二进制”菜单:

Sylixide ftpsetting.png

然后新建一如下的FTP站点,IP地址为SylixOS目标板的IP地址(如上面的192.168.7.30),端口号为21,用户名和密码均为root:

Sylixide ftpconfig.png

建议重命名该FTP站点的名称为IP地址,即192.168.7.30,以方便区分。

点击“连接”按钮即可连接到SylixOS目标板的FTP服务器:

Sylixide ftp.png

将本地磁盘路径切换到 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:

  1. [root@sylixos_station:/]# cd /apps/
  2. [root@sylixos_station:/apps]# ./hello_world
  3. hello world (base on sylixos)!

插入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进内核:

  1. [root@sylixos_station:/apps]# cd /lib/modules/
  2. [root@sylixos_station:/lib/modules]# modulereg hello_module.ko
  3. hello_module init!
  4. module hello_module.ko register ok, handle : 0x30c5da78

在控制台下输入命令 modules 即可查看当前内核插入的内核模块:

  1. [root@sylixos_station:/lib/modules]# modules
  2. NAME HANDLE TYPE GLB BASE SIZE SYMCNT
  3. ------------------------------ -------- ------ --- -------- -------- --------
  4. VPROCESS: kernel pid: 0 TOTAL MEMORY: 8192
  5. + hello_module.ko 30c5da78 KERNEL YES c00d1000 c4 2
  6. total modules : 1

调试SylixOS

增加调试实例

关闭上面的Qemu虚拟机程序。

先选中bspmini2440工程,然后点击调试工具栏Sylixide newdebug.png 的臭虫图标的下拉的Debug Configurations…菜单,将弹出如下的调试配置对话框:

Sylixide newdebugzylin.png

双击Zylin Embedded debug(Native),将增加一个名为bspmini2440 Default的实例:

Sylixide newzylindebug.png

修改调试配置

切换到Debugger选项卡,将GDB Debugger修改为

arm-none-eabi-gdb

将Stop on startup at修改为

reset

Sylixide debugconfig.png

切换到Commands选项卡,将Initalize commands修改为如下的内容:

  1. target remote localhost:1234
  2. load

Sylixide debugcommands.png

最后点击Apply按钮应用修改,点击Debug按钮开始调试。

开始调试

mini2440_debug.bat的内容如下:

  1. start qemu-system-arm.exe -s -S -M mini2440 -show-cursor -serial telnet:127.0.0.1:1200,server
  2. -mtdblock nand.bin -serial file:virtualkbd -net nic -net tap,ifname=virtual
  3. 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安全警报,请点击允许访问按钮。

Sylixide netwarnning.png

稍等数秒,Eclipse将控制arm-none-eabi-gdb连接到Qemu虚拟机,并将SylixOS的相关节区section加载到mini2440开发板内存的相应位置:

  1. target remote localhost:1234
  2. Remote debugging using localhost:1234
  3. 0x00000000 in ?? ()
  4. load
  5. Loading section .text, size 0x32f6fc lma 0x30000000
  6. Loading section .ARM.exidx, size 0x8 lma 0x3032f6fc
  7. Loading section .ctors, size 0x8 lma 0x3032f704
  8. Loading section .dtors, size 0x8 lma 0x3032f70c
  9. Loading section .data, size 0x282cc lma 0x3032f714
  10. Start address 0x30000000, load size 3504608
  11. Transfer rate: 497 KB/sec, 2028 bytes/write.

现在你可以通过图形化的方式调试SylixOS系统了:

Sylixide debug.png

调试真机

如果您需要使用硬件调试器(如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,如下图:

Sylixide jlink.png

最后,点击OK按钮,J-Link GDB Server将开始工作:

Sylixide jlinkgdbserver.png

将bspmini2440/S3C2440.gdbinit文件的内容复制到bspmini2440 Default调试实例的Commands选项卡的Initalize commands内,如下图:

Sylixide debugconfigjlink.png

bspmini2440/S3C2440.gdbinit文件的内容如下:

  1. #connect to J-Link GDB Server
  2. target remote localhost:2331
  3. #reset target
  4. monitor reset
  5. #select endian
  6. monitor endian little
  7. #initialize memory controler
  8. monitor long 0x53000000 = 0x00000000
  9. monitor long 0x4a000008 = 0xFFFFFFFF
  10. monitor long 0x4a00001c = 0x00007FFF
  11. monitor long 0x4c000000 = 0x00FFFFFF
  12. monitor long 0x4c000014 = 0x00000005
  13. monitor long 0x4c000004 = 0x0007F021
  14. monitor long 0x48000000 = 0x12111110
  15. monitor long 0x48000004 = 0x00000700
  16. monitor long 0x48000008 = 0x00000700
  17. monitor long 0x4800000c = 0x00000700
  18. monitor long 0x48000010 = 0x00000700
  19. monitor long 0x48000014 = 0x00000700
  20. monitor long 0x48000018 = 0x00000700
  21. monitor long 0x4800001c = 0x00018005
  22. monitor long 0x48000020 = 0x00018005
  23. monitor long 0x48000024 = 0x009804EC
  24. monitor long 0x48000028 = 0x000000B2
  25. monitor long 0x4800002c = 0x00000030
  26. monitor long 0x48000030 = 0x00000030
  27. #wait for moment
  28. monitor sleep 20
  29. #load the debug image
  30. load
  31. #set cpu to svc mode(on cpu reset)
  32. monitor reg cpsr = 0xd3
  33. #debug in ram
  34. monitor reg pc = 0x30000000
  35. #debug begin

最后,点击Debug按钮开始调试。

 

 

 

 

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号