AM335x的linux内核移植
- 格式:docx
- 大小:103.96 KB
- 文档页数:12
简述内核移植的具体步骤嘿,朋友们!今天咱就来唠唠内核移植这档子事儿。
啥是内核移植呢?就好比你有个超级棒的灵魂,想给它换个新身体,让它在新环境里继续大展拳脚。
首先呢,你得把原来的内核好好研究研究,就像了解一个老朋友一样,知道它的脾气、喜好。
这可不能马虎,不然咋知道该怎么给它挪窝呀!然后呢,选好新的目标环境,这就跟给灵魂找新家似的,得合适才行。
你可不能随随便便找个地儿就塞进去,那可不行。
接下来,就是最关键的一步啦!要把内核的代码啊、数据啊啥的,小心翼翼地搬到新环境里。
这可不像搬个桌子椅子那么简单,这得精细着来,不能有一点差错。
就好像给一个精致的瓷器搬家,轻不得重不得。
搬完了还不算完事儿,还得调试调试。
这就好比新搬了家得看看水电通不通,家具摆得合不合适。
要是有啥问题,赶紧解决,可不能留隐患。
在这过程中,你可得有耐心啊!别嫌麻烦,就跟盖房子似的,一砖一瓦都得认真对待。
你想想,要是房子盖得不结实,那能住得安心吗?而且啊,这可不是一个人能搞定的事儿,得团队合作。
大家齐心协力,各显神通,才能把这事儿干得漂亮。
这就跟一场足球比赛似的,每个人都有自己的位置和任务,只有配合好了,才能赢下比赛。
有时候可能会遇到难题,别着急,别慌张。
想想办法,多试试几种途径,说不定就柳暗花明又一村了呢!总之呢,内核移植可不是个简单的活儿,但只要咱认真对待,一步一个脚印,就一定能成功。
这就像爬山,虽然过程辛苦,但当你站在山顶俯瞰美景的时候,你就会觉得一切都值得啦!所以,加油吧,朋友们!让我们一起征服内核移植这座大山!。
ARM openssh6.6p1移植步骤及说明AM335X开发板移植Openssh步骤及方法工具准备:创建目录:Mkdir am335x Cd am335x Mkdir ssh Cd sshMkdir compressed install sourceCompressed :存放压缩文件 Install:软件安装目录 Source: 解压后的文件 Cd installMkdir zlib-1.2.8 openssl-1.0.1h复制三个压缩文件到 compressed目录:进入目录:Cd /am335x/ssh/compressed 解压文件:Tar zxvf zlib-1.2.8.tar.gz -C ../source注:另两个操作方法一样。
Am335x目录结构如下:交叉编译步骤:Zlib 编译:Cd /am335x/ssh/source/zlib-1.2.8./configure --prefix=/am335x/ssh/install/zlib-1.2.8Vim Makefile修改后结果如下(共计4处): CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar rc CPP =arm-none-linux-gnueabi-gcc -E LDSHARED=arm-none-linux-gnueabi-gccMakeMake installOpenssl编译:Cd /am335x/ssh/source/openssl-1.0.1h ./Configureos/compiler:arm-none-linux-guneabi-gcc--prefix=/am335x/ssh/install/openssl-1.0.1h注意:Configure 这里的首字符 C 大写哦! MakeMake installOpenssh编译:Cd /am335x/ssh/source/openssh-6.6p1 ./configure --host=arm-none-linux-gnueabi --with-libs --with-zlib=/am335x/ssh/install/zlib-1.2.8 --with-ssl-dir=/am335x/ssh/install/openssl-1.0.1h --disable-etc-default-login CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-arMake注意:不需要 Make install目标板操作步骤:确保目标板上有以下目录,若没有,则新建:/usr/local/bin/ /usr/local/sbin/ /usr/local/etc/ /usr/local/libexec/ /var/run//var/empty/从PC机上将以下文件拷贝到目标板中:注:文件在PC机 /am335x/ssh/source/openssh-6.6p1/ 目录下scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan 拷贝到目标板/usr/local/binmoduli ssh_config sshd_config拷贝到目标板 /usr/local/etc sftp-server ssh-keysign 拷贝到目标板 /usr/local/libexec sshd 拷贝到目标板 /usr/local/sbin/生成Key文件:在PC机 /am335x/ssh/source/openssh-6.6p1/ 目录下运行: ssh-keygen -t rsa -f ssh_host_rsa_key -N \ssh-keygen -t dsa -f ssh_host_dsa_key -N \ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N \将生成的 ssh_host_*_key这3个文件copy到目标板的 /usr/local/etc/目录下开发板最后目录及文件结构:bin目录内容:Etc目录内容:Libexec目录内容:sbin目录内容:修改开发板passwd文件:在/etc/passwd 中添加下面这一行sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin开发板测试:运行sshd:解决上述问题,需如下步骤:在PC端执行如下:ssh-keygen -t dsa -f ssh_host_ed25519_key -N \感谢您的阅读,祝您生活愉快。
内核移植实验总结
一、实验目的
完成内核移植实验,以深入理解操作系统内核在不同硬件平台的移植过程。
二、实验内容
1. 配置ARM Linux 开发环境,包括异常处理,内存管理,设备驱动等有关linux 内核模块的移植。
2. 在ARM GRSDK 上移植kernel,并使其具有多任务,多线程,MPU,任务调度,中断处理,内存管理,设备驱动等功能。
三、实验结果
1. 配置ARM Linux 开发环境成功,可以对ARM 芯片进行编程,并能够在开发板上运行程序;
2. 在ARM GRSDK 上移植kernel 成功,能够正常运行linux 系统,并具有多任务,多线程,MPU,任务调度,中断处理,内存管理及设备驱动等功能。
四、实验体会
通过本次实验,深入了解了ARM Linux 内核的移植,学会了如何在ARM GRSDK 上移植Linux 内核,以及如何添加中断处理,内存管理,设备驱动等模块。
本次实验是一次宝贵的经验,也让我对操作系统内核的原理有了更深刻的理解,让我对操作系统的知识有了更加全面深入的认识。
- 1 -。
一种基于strongSwan的IPSec VPN网关的实现蒋华;李康康;胡荣磊【摘要】IPSec VPN是一种使用IPSec协议来实现的虚拟专用网技术.针对国密算法在网络安全产品上的应用相对较少这一问题,设计一种基于开源IPSec项目strongSwan的VPN网关.该网关使用SSX0912加密芯片中的国密算法接口替换了strongSwan的国际密码算法接口,完成了strongSwan对国密标准的支持.将修改后的strongSwan移植到AM335x为核心的开发板中,在嵌入式硬件环境中实现了IPSec VPN的网关.通过搭建开发环境测试,该网关运行稳定,延时小,使用硬件加密模块,安全性更高,相比于简单的Linux系统实现,应用范围也更加广泛.%IPSec VPN is a technology using IPSec protocol to implement virtual private network.Aiming at the problem that the application of secret algorithm in network security product is relatively small, a VPN gateway based on the open source IPSec project strongSwan is designed.The gateway replaces strongSwan's encryption algorithm interface with the SSX0912 encryption chip, which implements the strongSwan support for the state security standard.The modified strongSwan is transplanted to AM335x as the core of the development board in the embedded hardware environment to achieve the IPSec VPN gateway.By setting up the development environment, it is found that the gateway runs stably and has little pared with the simple Linux system, the hardware encryption module is more secure and the application range is more extensive.【期刊名称】《计算机应用与软件》【年(卷),期】2017(034)007【总页数】6页(P79-84)【关键词】虚拟专用网;国密算法;strongSwan;嵌入式【作者】蒋华;李康康;胡荣磊【作者单位】北京电子科技学院北京 100070;西安电子科技大学陕西西安710071;西安电子科技大学陕西西安 710071;北京电子科技学院北京 100070【正文语种】中文【中图分类】TP393.08随着IPSec VPN对性能、安全性的要求越来越高,IKEv1(网络密钥交换)协议[1]的冗余性、缺乏一致性的缺点越来越明显[2]。
MYD-AM335X-J Linux 开发手册版本V1.12014/10/23版本记录目录第1章概述及软件资源介绍 (1)1.1 概述 (1)1.2 软件资源 (1)第2章Linux开发环境搭建 (3)2.1 建立工作目录 (3)2.2 设置交叉编译工具 (3)2.3 安装工具 (3)第3章Linux系统编译 (4)3.1 编译Bootloader (4)3.2 编译Linux内核 (5)3.3 制作文件系统 (5)第4章Linux 系统烧写 (6)4.1 TF卡系统映像更新 (6)4.2 NAND Flash更新/恢复 (7)第5章Linux应用程序 (10)5.1 GPIO (10)5.2 NET (10)5.3 RTC (11)5.4 LCD (11)5.5 Audio (12)5.6 I2C总线测试 (12)5.7 串口 (12)5.8 RS485 (12)5.9 CAN (13)5.10 引脚功能切换 (13)5.10.1 RS485_1跟UART5_RTSCTS 切换145.10.2 RS485_2和UART3切换及CAN1和UART4切换15第6章Qt开发 (17)6.1 使用光盘提供的Qt SDK (17)6.2 交叉编译Qt开发环境 (17)6.3 移植Qt到开发板 (18)6.4 交叉编译Qt应用程序 (19)第1章概述及软件资源介绍1.1 概述MYD-AM335X-J提供了丰富的系统资源和软件资源,本手册将从环境搭建开始,一步步介绍如何进行MYD-AM335X-J Linux开发。
本手册中开发主机上的命令以Ubuntu为例进行教授。
1.2 软件资源表1-1第2章Linux开发环境搭建2.1 建立工作目录拷贝MYD-AM335X-J光盘中的资料到主机中:$ mkdir -p <WORKDIR>$ cp -a <DVDROM>/05-Linux_Source/* <WORKDIR>2.2 设置交叉编译工具$ cd <WORKDIR>/Toolchain$ tar -xvjf \gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2$ export PATH=$PATH:<WORKDIR>/Toolchain/\gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin$ export CROSS_COMPILE=arm-linux-gnueabihf-执行完“export”命令后输入arm按Tab键来检查是否设置成功,该设置只对当前终端有效,如需永久修改,请修改用户配置文件。
OK335X-Linux用户手册第一章OK335X简介OK335X开发板基于TI AM335X处理器,运行主频最高720M,支持Linux,WinCE,Android三大操作系统,可用于工业产品设计。
OK335X有核心板和底板组成,核心板主要芯片有:CPU,NandFlash,Memory,PowerManage。
使用我们的核心板,只需要根据您的业务需求开发自己的底板,这样可加速您的产品上市时间,让您从平台搭建的复杂环境中脱离。
下面我们具体描述OK335X核心板和底板资源。
OK335X产品图片如下所示:核心板硬件资源:1CPU主频:720M(支持AM3352,AM3354,AM3356,AM3357,AM3358,AM3359)2NandFlash:256M(Micro SLC)3Memory:265M(Micro DDR2)4PowerManage IC:TPS65217B(TI AM335X专用电源IC)底板资源:14路串口(2个232电平,2个TTL电平,232电平已经使用DB9座子引出,其中COM0作为调试串口使用,注意:OK335X-V1底板中UART4暂时不能使用,下一硬件版本将修正这个问题)。
21路100M网口3音频接口(1路Phone输出,1路Line-in输入)41个SD卡接口56个用户按键63路I2C接口71个LCD接口(支持RGB888模式,支持电阻触摸和电容触摸。
默认标配7寸电阻屏)81路PWM接口,用于蜂鸣器测试。
91路Can接口101路SDIO接口11多路用户IO接口12四路USB2.0接口,一路USB2.0OTG(目前板子为一路USB Host接口,后续会增加到四路USB HUB)131路SPI接口148路AD(其中4路用于电阻触摸,1路用于滑动变阻器AD测试,其余3路通过插针引出,另外滑动变阻器端有跳线设置,通过跳线可以设置这路AD用于插针引出,还是用于可调电阻测试)15引出总线接口(缺省未焊接底座)161个RESET按钮,用于系统复位。
本文主要描述在EVB335X-II以Device Tree的方式移植新TI官网AM335X系列最新的linux-3.14.43版本内核以及移植Debian文件系统的过程及遇到的一些问题。
整个Device Tree牵涉面比较广,即增加了新的用于描述设备硬件信息的文本格式(即.dts文件),又增加了编译这一文本的工具,同时Bootloader也需要支持将编译后的Device Tree传递给Linux内核。
以下是修改步骤:一、修改uboot,支持Device TreeEVB335X-II在linux-3.2版本内核移植的时候已经有uboot,因此只需在该uboot上增加Device Tree支持即可,以下是修改步骤:1、修改include/configs/com335x.h文件,增加支持DT的宏定义:/* Flattened Device Tree */#define CONFIG_OF_LIBFDT2、修改uboot启动参数,增加dtb文件的加载和启动(由于目前只是移植EMMC版本的EVB335X-II,因此只需修改EMMC的启动参数即可,大概在405行),修改如下:#elif defined(CONFIG_EMMC_BOOT)#define CONFIG_BOOTCOMMAND \"run mmcboot;"#define CONFIG_EXTRA_ENV_SETTINGS \"lcdtype=AUO_AT070TN94\0" \"console=ttyO0,115200n8\0" \"mmcroot=/dev/mmcblk0p2 rw\0" \"mmcrootfstype=ext4 rootwait\0" \"mmcargs=setenv bootargs console=${console} noinitrd root=${mmcroot} rootfstype=${mmcrootfstype} lcdtype=${lcdtype} consoleblank=0\0" \"mmcdev=" MMCDEV "\0" \"loadaddr=0x81000000\0" \"dtbfile=evb335x-ii-emmc.dtb\0" \"bootenv=uEnv.txt\0" \"bootpart=" BOOTPART "\0" \"loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \"importbootenv=echo Importing environment from mmc ...; " \"env import -t $loadaddr ${filesize}\0" \"loadaddr-dtb=0x82000000\0" \"loadimage=load mmc ${bootpart} ${loadaddr} uImage\0" \"loaddtb=load mmc ${bootpart} ${loadaddr-dtb} ${dtbfile}\0" \"mmcboot=mmc dev ${mmcdev}; " \"if mmc rescan; then " \"echo SD/MMC found on device ${mmcdev};" \"if run loadbootenv; then " \"echo Loaded environment from ${bootenv};" \"run importbootenv;" \"fi;" \"run mmcargs;" \"if run loadimage; then " \"run loaddtb;" \"bootm ${loadaddr} - ${loadaddr-dtb};" \"fi;" \"fi; \0"#endif以上,红色为修改部分。
摘要随着时代的发展,人们的生活越来越离不开电子产品,特别是嵌入式电子产品。
嵌入式的发展越来越好,得益于硬件的发展和各类嵌入式系统的进步。
在众多的嵌入式系统中,最为让人熟悉的就是linux了。
所以,这次的课题就以linux 内核为主题,使用的开发板是TI的beaglebone white。
关键词:Linux移植,嵌入式,arm目录1.嵌入式系统的概念 (4)1.1嵌入式系统定义 (4)1.2ATMEL9200开发平台 (4)2.BootLoader简介 (4)2.1 Boot Loader概念 (4)2.2 Boot Loader启动过程 (5)2.3 常用的Bootloader…………………………………………… .52.4 u-boot移植…………………………………………………… .53.嵌入式linux操作系统 (7)3.1 嵌入式Linux (7)3.2 嵌入式Linux的特点 (7)3.3 从Linux到嵌入式Linux (8)4. 基于BeagleBone的嵌入式linux系统移植 (9)4.1 移植概念 (9)4.2 Linux与移植相关内核结构 (9)4.3 嵌入式Linux 操作系统移植 (9)5 文件系统构建 (9)6 把u-boot、linux内核、文件系统下载到SD卡中 (11)7启动开发板,链接pc,查看效果 (11)8 参考文献 (13)1.嵌入式系统的概念1.1嵌入式系统定义在信息科学技术爆炸式增长的今天,嵌入式系统早已经融入了我们生活的方方面面。
美国汽车大王福特公司的高级经理曾宣称,“福特出售的‘计算能力’已超过了IBM”。
这并不是一个哗众取宠或者夸张的说法,在真正感受这句话的震撼力之前,让我们先了解一下嵌入式系统(Embedded Systems)的定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
举例来说,大到油田的集散控制系统和工厂流水线,小到家用VCD机或手机,甚至组成普通PC终端设备的键盘、鼠标、软驱、硬盘、显示卡、显示器、Modem、网卡、声卡等均是由嵌入式处理器控制的,嵌入式系统市场的深度和广度,由此可见一斑,尽管如此,它的市场价值也许仍然超过了您的想象:今天,嵌入式系统带来的工业年产值已超过了1万亿美元。
1.2BeagleBone开发平台BeagleBone 是仅有信用卡大小的低成本Linux 计算机,它与Internet 相连并运行高级操作系统,例如Android 4.0 和Ubuntu Linux。
BeagleBone 包含大量I/O 并使用TI Sitara ™AM335x ARM® Cortex™-A8 处理器为实时分析提供处理能力。
要进一步进行定制和扩展,可以使用Cape 插件板以轻松扩展BeagleBone 的功能。
BeagleBone 具有广泛的开源软件支持选项,包括社区支持的Ångström Linux 发行版、Ubuntu或多个其他Linux 发行版。
它还支持TI Android DevKit和TI Sitara Linux EZ SDK。
TI 支持的两个操作系统使您可以快速入门并操作,只需进行简单的设置即可获得开箱即用体验。
它们包括用于启动演示、基准和应用的GUI。
此外,您可以快速开始开发您自己的应用。
还通过嵌入的Adeneo 支持Windows Embedded Compact 7。
BeagleBone 是一个由社区支持的平台,可用作构建更完整系统的基础和社区软件基线的目标。
作为一种替代方案,德州仪器(TI) 直接支持AM335x 入门套件或AM335x 评估模块。
2.BootLoader简介2.1 Boot Loader概念简单地说,Boot Loader 就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
通常,Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。
因此,在嵌入式世界里建立一个通用的Boot Loader 几乎是不可能的。
尽管如此,我们仍然可以对Boot Loader 归纳出一些通用的概念来,以指导用户特定的Boot Loader 设计与实现。
2.2 Boot Loader启动过程系统上电后,先执行第一阶段代码,进行相应的初始化后,将Blob 第二阶段代码复制到RAM 地址bloc_abs_base,然后跳转到第二阶段开始执行。
在第二阶段中,从汇编跳转到 C 的Main() 函数,继续进行如下工作:外围的硬件初始化(串口,USB 等);将Flash 中的kernel 加载到DRAM 的kernel 区域;将Flash 中的ramdisk 加载到DRAM 的ramdisk 区域;根据用户选择,进入命令行模块或启动kernel。
2.3 常用的Bootloader(1)BlobBlob是Boot Loader Object的缩写,是一款功能强大的Bootloader。
它遵循GPL,源代码完全开放。
Blob既可以用来简单的调试,也可以启动Linux kernel。
Blob最初是Jan-Derk Bakker和Erik Mouw为一块名为LART(Linux Advanced Radio Terminal)的板子写的,该板使用的处理器是StrongARM SA-1100。
现在Blob 已经被移植到了很多CPU上,包括S3C44B0。
(2)ArmbootArmboot是一个bootloader,是为基于ARM或者StrongARM CPU的嵌入式系统所设计的.它支持多种类型的Flash;允许映像文件经由bootp . dhcp . tftp从网络传输;支持从串口线下载S-record或者binary文件;允许内存的显示及修改;支持jffs2文件系统等。
(3)u-bootU-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。
从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。
其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。
但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。
2.4 u-boot移植因为TI是一家非常负责的公司,所以它的官网上有非常详细的移植方法文档和工具,这给我们开发人员带来了极大的便利。
以下的移植都是参考Ti提供的技术文档的。
我们现在Ti的官网查找对应的资料。
全英文的,看得有点吃力。
下载Ti提供的在linux 地下进行开发的工具ti-sdk-am335x-evm-07.00.00.00,然后安装即可得到。
我们到目录:~/ti-sdk-am335x-evm-07.00.00.00/board-support/u-boot-2013.10-ti2013.12.01/下进行如下米命令进行默认的配置编译:make O=am335x CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm am335x_evm经过编译完成后,在当前目录下回有一个am335x目录生成,里面包含了u-boot启动映像u-boot.img文件和MLO文件。
以下是am335x的config.h的部分代码:#ifndef __CONFIG_AM335X_EVM_H#define __CONFIG_AM335X_EVM_H#include <configs/ti_am335x_common.h>#define MACH_TYPE_TIAM335EVM3589/* Until the next sync */#define CONFIG_MACH_TYPE MACH_TYPE_TIAM335EVM/* Clock Defines */#define V_OSCK24000000 /* Clock output from T2 */#define V_SCLK(V_OSCK)/* Custom script for NOR */#define CONFIG_SYS_LDSCRIPT"board/ti/am335x/u-boot.lds"/* Always 128 KiB env size */#define CONFIG_ENV_SIZE(128 << 10)#define CONFIG_ENV_V ARS_UBOOT_RUNTIME_CONFIG#ifndef CONFIG_SPL_BUILD#define CONFIG_EXTRA_ENV_SETTINGS \"loadaddr=0x80200000\0" \"fdtaddr=0x80F80000\0" \"fdt_high=0xa0000000\0" \"boot_fdt=try\0" \"rdaddr=0x81000000\0" \"bootpart=0:2\0" \"bootdir=/boot\0" \"bootfile=zImage\0" \"fdtfile=undefined\0" \"console=ttyO0,115200n8\0" \"partitions=" \"uuid_disk=${uuid_gpt_disk};" \"name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" \"optargs=\0" \"dfu_alt_info_mmc=" DFU_ALT_INFO_MMC "\0" \"dfu_alt_info_emmc=rawemmc mmc 0 3751936\0" \"mmcdev=0\0" \"mmcroot=/dev/mmcblk0p2 ro\0" \"mmcrootfstype=ext4 rootwait\0" \"usbroot=/dev/sda2 rw\0" \"usbrootfstype=ext4 rootwait\0" \"rootpath=/export/rootfs\0" \"nfsopts=nolock\0" \"static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}" \"::off\0" \"ramroot=/dev/ram0 rw ramdisk_size=65536 initrd=${rdaddr},64M\0" \"ramrootfstype=ext2\0" \"mmcargs=setenv bootargs console=${console} " \"${optargs} " \"root=${mmcroot} " \"rootfstype=${mmcrootfstype}\0" \"usbargs=setenv bootargs console=${console} " \"${optargs} " \"root=${usbroot} " \"rootfstype=${usbrootfstype}\0" \"spiroot=/dev/mtdblock4 rw\0" \"spirootfstype=jffs2\0" \"spisrcaddr=0xe0000\0" \"spiimgsize=0x362000\0" \"spibusno=0\0" \"spiargs=setenv bootargs console=${console} " \"${optargs} " \"root=${spiroot} " \············3.嵌入式linux操作系统3.1 嵌入式Linux嵌入式Linux(Embedded Linux)是指对Linux经过小型化裁剪后,能够固化在容量只有几十万字节或几十亿字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux操作系统。