运行SylixOS

运行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的内容如下:

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系统将启动起来并进入到控制台:

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:

[root@sylixos_station:/]# cd /apps/
[root@sylixos_station:/apps]# ./hello_world
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进内核:

[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

调试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修改为如下的内容:

target remote localhost:1234
load

Sylixide debugcommands.png

最后点击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安全警报,请点击允许访问按钮。

Sylixide netwarnning.png

稍等数秒,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系统了:

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文件的内容如下:

#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按钮开始调试。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值