当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]什么是uclinuxuclinux表示micro-control linux.即“微控制器领域中的Linux系统”,是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。uCLinux主

什么是uclinux

uclinux表示micro-control linux.即“微控制器领域中的Linux系统”,是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。uCLinux主要是针对目标处理器没有存储管理单元MMU(Memory Management Unit)的嵌入式系统而设计的。它已经被成功地移植到了很多平台上。由于没有MMU,其多任务的实现需要一定技巧。

uClinux是嵌入式Linux领域非常重要的分支,已成功应用于路由器、机顶盒、PDA等领域,与标准Linux在内存管理方面有着本质的区别。

uCLinux是一种优秀的嵌入式Linux版本,是micro-Controller-Linux的缩写。它秉承了标准Linux的优良特性, 经过各方面的小型化改造,形成了一个高度优化的、代码紧凑的嵌入式Linux。虽然它的体积很小,却仍然保留了Linux的大多数的优点:稳定、良好的移植性、优秀的网络功能、对各种文件系统完备的支持和标准丰富的API。它专为嵌入式系统做了许多小型化的工作,目前已支持多款CPU。 其编译后目标文件可控制在几百KB数量级,并已经被成功地移植到很多平台上。

 


uClinux下STM32开发环境搭建

一实验环境介绍:

目标板:STM3210E-EVAL

上位机操作系统:RedHatFedora 10

虚拟机:VMware 6.5

二、在开始搭建环境之前你需要三个压缩包:

1、IA32 GNU/Linux Installer :GNU工具安装包,你可以把它简单的理解为Windows下面的MDK或者IAR等编译环境。

2:这是Linux 2.26内核的源文件。可以理解为是在Windows下面我们要编写的文件的工程的源文件的一部分。

3、uClinux-dist-20080808-20090112.patch.gz:为了支持STM32的开发和加入一些源文件。可理解为在Windows下面我们要编写的文件的工程的源文件的另一部分。

第2个软件包加上第3个软件包就是我们在MDK和IAR下的工程源文件了。理所当然地就包含了TImer.c lib.h等STM32的库文件了。

OK,接下为你地有一个在PC上跳的Linux操作系统,我这里安装的是Fedora 10 。安装过程这里就不作详细的介绍了,这一类教程网上都有。这里有一点需要注意一下的,就是硬盘的空间尽可能的大点,因为软件包2将占用2.6G左右的空间,而软件包1、3也会占几百M的空间。因此你在安装完Linux后到少要保证你的用户区的空间要不少于3G。

若你之前玩过S3C44B0X上面的uClinux且看了网上现在点击率最高的那套视频教程的话我想你大概会使用SSH建立一条从Window到虚拟Linux的通道。在这里我花点小时间说说一个我个人使用的方法:使用VMware自带的软件共享功能。

1、 Windows下,打开VMware。

2、 VM –》SetTIngs…。

3、 在弹出介面中选择OpTIons标签。

 


4、 选择Shared Folders.

 


5、 右边选择Always Enable

6、 右下角Add.。把你准备共享的Windows文件夹(一般为你存放那几个软件包的文件夹或盘)的路径(host path)添加进去。Name的话就是你在linux看到的文件夹的名称。

 


说到这里再提一下Hardware那里可以把串口,USB等添加进去。方便日后调试之用。

启动linux后你将会在/mnt/hgfs文件夹下看到你刚刚共享的文件夹。

三、把三个软件包拷贝到linux里面。找一个容易找到的地方安顿好它们。

(1)接下来安装GNU工具:

1、 运行终端

2、 使用cd命令进入那三个软件包所在的文件夹

3、 执行#./arm-2009q1-163-arm-uclinuxeabi.bin 运行第一个软件包

4、 运行一段时间后会弹出一个安装向导窗口,跟着你需要做的就只是像在windows下面安装软件那样安装它就好。基本上是一路next ,到了选择安装文件夹时你需要注意一下它的位置,以便日后查找,用于设置环境变量。

(2)解压第2个软件包可以点击右键解压也可以在终端中输入命令进行解压:(在软件包当前目录路径下运行)# tar –xjvf uClinux-dist-20080808.tar.bz2

由于这个包的文件比较多,所以需要一定的时间。解压后会生成一个uClinux-dist的文件夹。

(3)打补丁,patch第3个软件包。

在终端下运行:

#zcat uClinux-dist-20080808-20090112.patch.gz | patch -p1(上面的命令的前提条件是第2个包的安装路径和path软件包也是同时在当前目录下。)

若不在同一目录下,你必须先进入uClinux-dist文件夹。运行#zcat /路径/uClinux-dist-20080808-20090112.patch.gz | patch -p1上面路径:用你的第3个软件包的存放路径代替。

四、为STM3210E-EVAL配置uClinux

进入uClinux-dist文件夹。

运行#make menuconfig

进入目标板配置界面:

 


进入”Vendor/Product SelecTIon”

 


uClinuxOnSTM32选择Vendor,

然后选择”STMicroelectionics”如图:[!--empirenews.page--]

 


完成上述选择后会自动返回到上一界面。在上一界面选择:” STMicroelectionics Products”里面有两个选项:

“STM3210E-EVAL-jffs” 和“STM3210E-EVAL-MCU_Flash”

若选择“STM3210E-EVAL-jffs”则程序将从外部存储器中启动。而选择“STM3210E-EVAL-MCU_Flash”刚从内部FLASH中启动运行。从内部运行的是一个uClinux的微内核。是一个删减的版本。

在这里我们选择“STM3210E-EVAL-jffs”

然后回到最顶的菜单项。

进入Kernel / Library / Defaults Selection选项

第一项为”Kernal Version “ 选择内核版本。这里选择2.26版。

第二项为”libc Version” C库的版本,这里选择None.

第三项为“Default all settings”将默认厂商/产品的配置应用到内核。(为了将刚刚选择的ST的E板的信息和配置加进去,些项必选)。

第四项为“Customize Kernel Settings”用于自定义内核设置。(嵌入式的内核都是自己定制的,此项必选)。

第五项为“Customize Application/Library Settings”用于自定义添加到文件系统的应用。(可选择性地为板子添加若删除LED,LCE,串口等的应用,此项必选)。

第六项为“Update Default Vendor Settings”其功能为将当前修改的情况设置为默认版本。(由官方开发的模板应该是最好的,所以这项一般不选,当你做出比官方更好,更稳定的配置时,可将您自己的模板设置为默认模板,在这里,这一项就不选项了。)

退出当前配置,系统会提示你是否要保存。选择”YES”退出后,接下来将自动进入uCLinux的配置界面:完整的内核配置的详尽介绍(每一项的意义,内容很多)这里只介绍与E板相关的配置。

如图所示:

 


进入”System Type”

该目录内容如下:

 


“MMU-based … “ 因为STM32不具有MMU,此项跳过。

“ARM System type” ARM系统类型。进去后选择,基于STM32的ST板。

“STMicroelectionics,boards ”选项就只有一个选项了。选择之。

“Support ARMv7-M processors” 选择。

最重要的一项为设定内存的地址。

“Set flash/sram size and base addr”

这些都需要根据你的板子的情况而家它上面有内外部内在的基地址和大小,中断微量表的位置等的设置。

这一菜单配置完成后回到顶层菜单。

进入“Boot Options”菜单,

 


设置”Kernel Execute-In-Place from ROM”

这里设置的是程序执行的地址。

若程序是在外部存储器执行的话这里的地址就为0X6400 0000

若为内部FALSH执行刚为0X8000 0000

设置后返回,进入“Device Drivers” -》 “Character Device” -》 “Serial Drivers”。意思是到”设备驱动”-》”字符驱动”-》”串口驱动”菜单下选择对E板的串口支持,用于与板子的交互操作。

在此目录下选择:

[ * ] STM3210E-EVAL USART Port

[ *] Support for console on STM3210E-EVAL USART Port

选择后返回顶层菜单。选择”File System”“File systems” -》 “Miscellaneous File system”选择[ * ] Journalling Flash File System v2 (JFFS2)support 实现对JFFS2文件系统的支持。

完成后退出内核配置,自动进入应用设置。

 


如上图所示,选择”Miscellaneous Applications ”

选择: “STM3210E-EVAL Demo(s)”

菜单里面有几个已经做好的应用。都选上。

最后退出菜单,保存设置。

在编译刚刚所做的一切之前有一个很重要的步骤。就是把你的GNU工具的路径添加到环境变量中。不然的话直接make 的话就会找不到编译器。

执行export PATH$PATH:”你安装的GNU工具的路径”

添加完成后,就可以运行make就可以了。

一切顺利的话你将会在uClinux-dist/image目录下看到生成的三个映像文件。(如果是使用外部FLASH的话)

若使用的是内部的FLASH启动的微内核的配置的话就只会生成一个文件。而且生成的过程需要按以下的方式:

1、先运行make ucfront命令

2、再运行make user_only命令

3、跟着运行make romfs命令

4、最后运行make image命令,一切顺利的话,你将会在uClinux-dist/image目录下看到生成的映像文件。

最后将生成的影像文件拷贝回Windows,使用STM32的烧写软件Flash loader demonstrator将软件烧写进去就行了。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

嵌入式开发作为信息技术的关键支柱,在全球数字化转型浪潮中扮演着无可替代的角色。从传统的嵌入式微控制器到如今先进的片上系统(SoC),再到与云计算、人工智能深度融合的智能终端,嵌入式系统的演进与发展始终紧跟时代脉搏。本文将...

关键字: 嵌入式开发 智能应用
关闭
关闭