1.搭建 SylixOS linux 编译环境

主机操作系统是Ubuntu-12.04,使用的是普通用户user

1)安装开发工具

编译 Qemu 需要用到主机系统的 g++ 编译器,而下载 SylixOS 源代码需要 Git 工具,修改配置文件需要用到 vim 编辑器, 如果

你的系统不具备这些工具,请先执行如下命令安装它们到你的系统:

sudo apt-get install build-essential

sudo apt-get install git

sudo apt-get install vim

2)下载SylixOS 源代码

打开终端,创建一个名为 sylixos_workspace 的目录(下文约定该目录是 /home/user/sylixos_workspace 目录,即

~/sylixos_workspace),

cd ~

mkdir sylixos_workspace

进入该目录,输入如下命令即可下载 SylixOS Base工程、mini2440开发板BSP工程、示例工程等:

cd sylixos_workspace

git clone http://git.sylixos.com/repo/sylixos-base.git

git clone http://git.sylixos.com/repo/bspmini2440.git

git clone http://git.sylixos.com/repo/examples.git

git clone http://git.sylixos.com/repo/tools.git

git clone http://git.sylixos.com/repo/qemu-mini2440.git

sylixos-base 是 SylixOS Base 工程,里面包含了 lIBSylixos 和 libcextern 子工程,输入如下命令初始化和更新子工程:

cd sylixos-base

git submodule init

git submodule update

cd ..

3)安装交叉编译器

交叉编译器的下载地地址是 https://launchpad.net/gcc-arm-em ... /+download/gcc-arm-

none-eabi-4_9-2015q1-20150306-linux.tar.bz2

下载的交叉编译器压缩包是 gcc-arm-none-eabi-4_9-2015q1-20150306-linux.tar.bz2。

输入如下命令将其解压到 /usr/lib 目录:

sudo tar jxvf gcc-arm-none-eabi-4_9-2015q1-20150306-linux.tar.bz2 -C /usr/lib

输入如下命令将解压后的目录重命名为 /usr/lib/gcc-arm-none-eabi 目录(避免编译器升级,版本号日期改变带来不必要的问题

):

sudo mv /usr/lib/gcc-arm-none-eabi-4_9-2015q1/ /usr/lib/gcc-arm-none-eabi

由于SylixOS修改了编译器的reent.h文件,所以使用编译器自带的 reent.h 文件将不能编译成功,需要复制

~/sylixos_workspace/tools/arm-none-eabi-patch/4.9/reent.h 文件到 /usr/lib/gcc-arm-none-eabi/arm-none-

eabi/include/sys 目录替换原有的文件

替换前先备份编译器原有的reent.h 文件:

sudo mv /usr/lib/gcc-arm-none-eabi/arm-none-eabi/include/sys/reent.h /usr/lib/gcc-arm-none-eabi/arm-none-

eabi/include/sys/reent.h.bak

再替换编译器原有的reent.h文件:

sudo cp ~/sylixos_workspace/tools/arm-none-eabi-patch/4.9/reent.h /usr/lib/gcc-arm-none-eabi/arm-none-

eabi/include/sys

为了方便后续使用,修改环境变量PATH:

vim ~/.bashrc

添加如下命令到 .bashrc 文件的末尾:

export PATH=/usr/lib/gcc-arm-none-eabi/bin

PATH

最后重新启动终端,输入arm-none-eabi-gcc 如果得到以下结果说明编译器安装成功:

user@ubuntu:~/sylixos_workspace$ arm-none-eabi-gcc

arm-none-eabi-gcc: FATal error: no input files

compilation terminated.

2.编译 SylixOS

1)编译SylixOS Base工程

sylixos-base工程包含了SylixOS操作系统libsylixos和SylixOS进程C库libextern子工程。

打开sylixos-base下的config.mk,修改为如下:

#*********************************************************************************************************

# SylixOS Base Project path

#*********************************************************************************************************

SYLIXOS_BASE_PATH = /home/user/sylixos_workspace/sylixos-base

#*********************************************************************************************************

# Toolchain prefix

#*********************************************************************************************************

TOOLCHAIN_PREFIX = arm-none-eabi-

#*********************************************************************************************************

# Debug options (debug or release)

#*********************************************************************************************************

DEBUG_LEVEL = debug

输入 MAKE 命令以编译:

make

编译耗费的时间视你的机器的性能而定,一般需要10分钟。

最后libsylixos子工程生成静态库文件libsylixos.a和libdsohandle.a及libvpmpdm.a、动态库文件libvpmpdm.so、内核模块

xinput.ko 和xsiipc.ko、符号表文件symbol.c和symbol.h(位于/home/user/sylixos_workspace/sylixos-base/libsylixos/Debug

目录)。

libextern子工程生成静态库文件libcextern.a和动态库文件libcextern.so(位于/home/user/sylixos_workspace/sylixos-

base/libcextern/Debug目录)。

2)编译bspmini2440工程

bspmini2440工程是移植SylixOS操作系统到mini2440开发板的BSP工程。

打开bspmini2440下的config.mk,修改为如下:

#*********************************************************************************************************

# SylixOS Base Project path

#*********************************************************************************************************

SYLIXOS_BASE_PATH = /home/user/sylixos_workspace/sylixos-base

#*********************************************************************************************************

# Toolchain prefix

#*********************************************************************************************************

TOOLCHAIN_PREFIX = arm-none-eabi-

#*********************************************************************************************************

# Debug options (debug or release)

#*********************************************************************************************************

DEBUG_LEVEL = debug

输入 make 命令以编译:

make

最后生成ELF文件bspmini2440.elf和二进制文件bspmini2440.bin(位于/home/user/sylixos_workspace/bspmini2440/Debug

目录)。

3)编译examples工程

examples工程是示例工程,包括应用程序工程、内核模块工程、库工程。

打开examples下的config.mk,修改为如下:

#*********************************************************************************************************

# SylixOS Base Project path

#*********************************************************************************************************

SYLIXOS_BASE_PATH = /home/user/sylixos_workspace/sylixos-base

#*********************************************************************************************************

# Toolchain prefix

#*********************************************************************************************************

TOOLCHAIN_PREFIX = arm-none-eabi-

#*********************************************************************************************************

# Debug options (debug or release)

#*********************************************************************************************************

DEBUG_LEVEL = debug

输入 make 命令以编译:

make

examples工程包含了三个子工程:应用程序示例工程hello_world、内核模块示例工程hello_module、库示例工程hello_library。

应用程序示例工程hello_world会生成应用程序可执行文件hello_world(位

于/home/user/sylixos_workspace/examples/hello_world/Debug目录)

内核模块示例工程hello_module会生成内核模块文件hello_module(位

于/home/user/sylixos_workspace/examples/hello_module/Debug目录)。

库示例工程hello_library会生成静态库文件libhello_library.a和动态库文件libhello_library.so(位

于/home/user/sylixos_workspace/examples/hello_library/Debug目录)。

3.搭建 SylixOS Linux 仿真环境

编译 qemu-mini2440

下载 qemu-mini2440 源代码

输入如下命令下载 qemu-mini2440 的源代码到 /home/user/sylixos_workspace/qemu-mini2440-src 目录:

cd /home/user/sylixos_workspace

git clone https://github.com/SylixOS/qemu-mini2440.git qemu-mini2440-src

配置 qemu-mini2440

输入如下命令配置 qemu-mini2440:

cd qemu-mini2440-src

./configure --target-list=arm-softmmu

如果出现如下提示:

Error: zlib check failed

Make sure to have the zlib libs and headers installed.

那么输入如下命令安装 zlib 开发包:

sudo apt-get install zlib1g-dev

同样,如果出现如下提示:

Error: sdl check failed

则输入如下命令安装 sdl1.2 开发包:

sudo apt-get install libsdl1.2-dev

编译 qemu-mini2440

输入如下命令编译:

make

正确编译之后,会在 arm-softmmu 子目录下生成 qemu-system-arm 文件。

输入如下命令将其复制到 /home/user/sylixos_workspace/qemu-mini2440 目录:

cp ./arm-softmmu/qemu-system-arm /home/user/sylixos_workspace/qemu-mini2440

2)配置 qemu 的网络功能

qemu 支持多种网络链接方式,其中最常用的就是桥接(bridge)。 这需要依赖内核的 tun/tap 模块的支持输入如下命令安装必要的

工具包:

sudo apt-get install uml-utilities

sudo apt-get install bridge-utils

输入如下命令查看 /dev/net/tun 文件:

ls -l /dev/net/tun

crw-rw-rwT 1 root root 10, 200 Apr 15 02:23 /dev/net/tun

如果该文件存在,这表明内核已经支持开启了 tun 支持,在 ubuntu-12.04 中,这个功能默认已经开启。

如果该文件不存在,则需要加载 tun 模块,并创建 /dev/net/tun 文件。

修改 /ETC/network/interfaces 文件,笔者的文件内容如下所示(示例文件位于 /home/user/sylixos_workspace/qemu-

mini2440/ubuntu-12.04 目录):

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

#NetworkManager#iface eth0 inet dhcp

auto br0

iface br0 inet dhcp

bridge_ports eth0

添加 /etc/qemu-ifup 和 /etc/qemu-ifdown 脚本

默认情况下,当 qemu 使用 tap 设备时,会执行 /etc/qemu-ifup 和 /etc/qemu-ifdown 这两个脚本

我们需要创建这两个脚本,然后为它们加上可执行权限(使用chmod +x)。

创建 /etc/qemu-ifup 脚本,内容如下所示(示例文件位于 /home/user/sylixos_workspace/qemu-mini2440/ubuntu-12.04 目

录):

#!/bin/sh

echo sudo tunctl -u $(id -un) -t $1

sudo tunctl -u $(id -un) -t $1

echo sudo ifconfig $1 0.0.0.0 promisc up

sudo ifconfig $1 0.0.0.0 promisc up

echo sudo brctl addif br0 $1

sudo brctl addif br0 $1

echo brctl show

brctl show

sudo ifconfig br0 192.168.7.20

创建 /etc/qemu-ifdown 脚本,内容如下所示(示例文件位于 /home/user/sylixos_workspace/qemu-mini2440/ubuntu-12.04

目录):

#!/bin/sh

echo sudo brctl delif br0 $1

sudo brctl delif br0 $1

echo sudo tunctl -d $1

sudo tunctl -d $1

echo brctl show

brctl show

输入如下命令为 /etc/qemu-ifup 和 /etc/qemu-ifdown 脚本加上可执行权限:

chmod +x /etc/qemu-ifup

chmod +x /etc/qemu-ifdown

最后需要重启计算机,使新的 /etc/network/interfaces 配置文件生效。

3)运行 qemu-mini2440 虚拟机

进入/home/user/sylixos_workspace/qemu-mini2440 目录:

cd /home/user/sylixos_workspace/qemu-mini2440

输入如下命令执行 NANDCreator.sh 脚本:

chmod +x nandCreator.sh

./nandCreator.sh

执行完成后,会在当前目录生成一个名为 nand.bin 的 Nand Flash 镜像文件。

输入如下命令执行 mini2440_run.sh 脚本:

chmod +x mini2440_run.sh

./mini2440_run.sh

mini2440_run.sh 脚本的内容如下:

./qemu-system-arm -M mini2440 -show-cursor -kernel ../bspmini2440/Debug/bspmini2440.bin -serial stdio -mtdblock

nand.bin -net nic,vlan=0 -net tap,vlan=0,ifname=tap0

如果出现如下信息:

warning: could not configure /dev/net/tun: no virtual network emulation

Could not initialize device 'tap'

那么先手动执行如下命令:

/etc/qemu-ifup tap0

注意:不可使用 sudo 执行上一条命令,每次启动 ubuntu 后都需要手动执行一次上一条命令。

theos linux环境,翼辉SylixOS Linux环境开发指南相关推荐

  1. 翼辉操作系统 linux,2K龙芯派翼辉SylixOS操作系统实验手册-翼辉信息.PDF

    2K龙芯派翼辉SylixOS操作系统实验手册-翼辉信息.PDF 目 录 一. 2K 龙芯派设备平台简介 1 1.1 Loongson2K1000 处理器介绍 1 1.1.1 芯片规格 1 1.1.2 ...

  2. 翼辉操作系统 linux,2K龙芯派翼辉SylixOS操作系统使用手册.PDF

    2K 龙芯派翼辉 SylixOS 操作系统使用手册 SylixOS 操作系统使用手册 User Manual PM0010010002 V1.00 Date: 2018/03/07 用户使用手册 类别 ...

  3. 【074】技术领先 | 翼辉 SylixOS 通过 IEC 61508(SIL3) / EN 50128(SIL4) 国际安全认证

    技术领先 | 翼辉 SylixOS 通过 IEC 61508(SIL3) / EN 50128(SIL4) 国际安全认证 发布于2021年07月20日 近日,翼辉 SylixOS 获得由国际知名权威认 ...

  4. 【069】南京市“2020十项重大创新成果”重磅发布!翼辉SylixOS成功入选!

    南京市"2020十项重大创新成果"重磅发布!翼辉SylixOS成功入选! 发布于2021年01月07日 2021年01月04日举行的南 京 市创新名城建设推进大会上,重磅发 布20 ...

  5. linux下汇编程序gas,Linux 汇编语言(GNU GAS汇编)开发指南

    汇编语言的优点是速度快,可以直接对硬件进行操作,这对诸如图形处理等关键应用是非常重要的.Linux 是一个用 C 语言开发的操作系统,这使得很多程序员开始忘记在 Linux 中还可以直接使用汇编这一底 ...

  6. linux汇编指令输出到屏幕,Linux 汇编语言(GNU GAS汇编)开发指南

    三.Hello World! 真不知道打破这个传统会带来什么样的后果,但既然所有程序设计语言的第一个例子都是在屏幕上打印一个字符串 "Hello World!",那我们也以这种方式 ...

  7. px4 uavcan linux,UAVCAN总线 - UAVCAN固件升级 - 《PX4开发指南》 - 书栈网 · BookStack

    UAVCAN 固件升级 电子调速器(ESC)矢量控制代码库 (Pixhawk ESC 1.6 and S2740VC) 下载ESC代码: git clone https://github.com/th ...

  8. asp.net mvc linux,ASP.NET MVC4开发指南PDF扫描版+源码

    ASP.NET MVC问世已久,几年前或许有人会担心ASP.NET MVC框架是否能用在实务的项目上,也担心用在新项目上是否真的能改善开发效率与质量,但笔者这几年下来,已经累积数十个网站项目改用ASP ...

  9. Linux下mysql支持中文,linux下mysql环境支持中文配置步骤

    sql脚本执行前加上: CREATE DATABASE IF NOT EXISTS mydatabase DEFAULT CHARSET utf8 COLLATE UTF8_GENERAL_CI; u ...

最新文章

  1. 资源|计算机视觉实战操作(PDF下载)
  2. 人工智能技术,对智慧交通的发展带来巨大影响
  3. 获取元素到页面顶部的距离_jQuery 操作元素综合案例
  4. c语言判断程序设计,C语言程序设计之判断(38页)-原创力文档
  5. C/S模型UDP实现
  6. PartialView 加载Js
  7. 马化腾最崇拜的作家吴晓波《历代经济变革得失》读书笔记
  8. mybatis学习(44):二级缓存1
  9. mysql char 二进制_SQL:char 和 varchar、binary 和 varbinary、二进制字符串、严格模式、汉字编码方式...
  10. 数据改写-数据科学导论
  11. 【图像重建】基于matlab GUI投影法图像重建【含Matlab源码 861期】
  12. 华硕触控板无法在Win11中使用的解决办法
  13. F23. Makefile教程
  14. Frodo and pillows
  15. Only fullscreen opaque activities can request orientation 最好的解析
  16. 小米手机5s简单刷成开发版获得ROOT权限的方法
  17. 高效率完成工作的12种热门编程语言,你会用几个?
  18. 同时安装wampserver和xampp
  19. 大数据:Hive - ORC 文件存储格式
  20. Google服务器机组强大超出你想象(图)

热门文章

  1. Java进阶,Set集合,Map集合
  2. 互联网摸鱼日报(2023-02-22)
  3. php 编辑PDF文件,php word 转 PDF,php 编辑 word,phpoffice,phpword,libreoffice
  4. java border类_Swing BorderLayout类
  5. 工具和网络游戏封包基础
  6. C++实现w3cshool设计模式教程--设计模式中的Java代码
  7. Linux 版勒索软件即将到来
  8. axios拦截器使用
  9. 微电子专业 | 哪所大学芯片最强?强在哪?(深度盘点)
  10. 图记 2016.1.4