当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]什么是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将软件烧写进去就行了。

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭