历史上的今天
返回首页

历史上的今天

今天是:2024年08月25日(星期日)

正在发生

2021年08月25日 | 为什么LPC1788不支持Linux

2021-08-25 来源:eefocus

       作为一颗很给力的Cortex-M3芯片,为何LPC1788不能移植Linux呢。因为和ARM7一样,LPC1788也不含MMU -----内存管理单元。MMU是高级操作系统(Windows,Linux)所必须的。简单来说MMU的作用是为线程提供更安全的存储空间。


        ARM9,ARM11这类cpu都包含了


        当然也不是没办法,针对LPC17xx这类没有MMU的CPU可以使用uCLinux。只是目前移植uCLinux到LPC17xx的资料还比较少。


        借百度科普下MMU


        完整词条:http://baike.baidu.com/link?url=eOwAmbW0dXaXsQh1ylxcKFI8vxWQ54o_tAmfv1OAu51hB-Nv3mo1EowL8Er4TciT


MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。


将线性地址映射为物理地址

现代的多用户 多进程操作系统,需要MMU,才能达到每个用户进程都拥有自己独立的 地址空间的目标。使用MMU, 操作系统划分出一 段地址区域,在这块地址区域中,每个进程看到的内容都不一定一样。例如MICROSOFT  WINDOWS操作系统将地址范围4M-2G划分为用户 地址空间,进程A在地址0X400000(4M)映射了 可执行文件,进程B同样在地址0X400000(4M)映射了可执行文件,如果A进程读地址0X400000,读到的是A的可执行文件映射到RAM的内容,而进程B读取地址0X400000时,则读到的是B的可执行文件映射到RAM的内容。


这就是MMU在当中进行 地址转换所起的作用。


提供硬件机制的内存访问授权

多年以来, 微处理器一直带有片上 存储器管理单元(MMU),MMU能使单个 软件线程工作于硬件保护 地址空间。但是在许多商用 实时操作系统中,即使系统中含有这些硬件也没采用MMU。


当 应用程序的所有线程共享同一 存储器空间时,任何一个线程将有意或无意地破坏其它线程的代码、数据或 堆栈。异常线程甚至可能破坏内核代码或内部 数据结构。例如线程中的指针错误就能轻易使整个 系统崩溃,或至少导致系统工作异常。


就安全性和可靠性而言,基于进程的 实时操作系统(RTOS)的性能更为优越。为生成具有单独 地址空间的进程,RTOS只需要生成一些基于RAM的 数据结构并使MMU加强对这些数据结构的保护。基本思路是在每个关联转换中“接入”一组新的 逻辑地址。MMU利用当前映射,将在指令调用或数据读写过程中使用的 逻辑地址映射为 存储器 物理地址。MMU还标记对非法 逻辑地址进行的访问,这些非法逻辑地址并没有映射到任何 物理地址。


这些进程虽然增加了利用查询表访问 存储器所固有的 系统开销,但其实现的效益很高。在进程边界处,疏忽或错误操作将不会出现, 用户接口线程中的缺陷并不会导致其它更关键线程的代码或数据遭到破坏。目前在可靠性和安全性要求很高的复杂 嵌入式系统中,仍然存在采无 存储器保护的 操作系统的情况,这实在有些不可思议。


采用MMU还有利于选择性地将页面映射或解映射到 逻辑地址空间。物理存储器页面映射至逻辑空间,以保持当前进程的代码,其余页面则用于数据映射。类似地,物理存储器页面通过映射可保持进程的线程 堆栈。RTOS可以在每个线程 堆栈解映射之后,很容易地保留逻辑地址所对应的页面内容。这样,如果任何线程分配的 堆栈发生溢出,将产生硬件 存储器保护故障,内核将挂起该线程,而不使其破坏位于该地址空间中的其它重要存储器区,如另一线程堆栈。这不仅在 线程之间,还在同一地址空间之间增加了 存储器保护。


存储器保护(包括这类 堆栈溢出检测)在 应用程序开发中通常非常有效。采用了 存储器保护, 程序错误将产生异常并能被立即检测,它由 源代码进行跟踪。如果没有 存储器保护, 程序错误将导致一些细微的难以跟踪的故障。实际上,由于在扁平 存储器模型中,RAM通常位于 物理地址的零页面,因此甚至NULL指针引用的解除都无法检测到。

推荐阅读

史海拾趣

南京国博公司的发展小趣事

在5G浪潮的推动下,国博电子凭借其在射频集成电路领域的深厚技术积累,成功研制出5G毫米波段Massive MIMO毫米波有源相控阵组件等一系列典型产品。这些产品不仅在国内市场得到了广泛应用,还赢得了国际市场的认可。国博电子的技术领先不仅推动了国内5G通信产业的发展,也为全球5G通信技术的进步做出了重要贡献。

Azoteq公司的发展小趣事

2013年,Azoteq发布了第三条产品线——PowerSense™。这一产品系列主要包括一系列交流LED照明解决方案,为照明行业带来了全新的技术突破。PowerSense™的推出,不仅进一步巩固了Azoteq在半导体行业的地位,也为其在未来的市场竞争中赢得了更多机会。

HCH Co公司的发展小趣事

背景:面对电子行业的快速变化和多元化需求,HCH Co公司意识到仅凭一己之力难以应对所有挑战。因此,公司积极寻求与其他行业的跨界合作机会,以共同推动电子行业的创新发展。

发展:通过与汽车、医疗、教育等多个行业的领军企业建立合作关系,HCH Co公司成功将自身的电子技术和产品应用于更广泛的领域。例如,与汽车制造商合作开发智能驾驶系统、与医疗机构合作研发远程医疗设备等。跨界合作不仅为公司带来了新的增长点,也促进了不同行业之间的技术交流和资源共享。未来,HCH Co公司将继续秉承开放合作的理念,与更多行业伙伴携手共创美好未来。

请注意,以上五个故事是基于假设构建的,旨在反映电子行业中企业可能的发展路径和趋势。实际情况中,“HCH Co”公司的具体发展故事可能有所不同。

AEMC Instruments公司的发展小趣事

随着电子行业的不断发展,AEMC Instruments公司不断追求技术创新和产品升级。公司投入大量资源进行研发,成功推出了接地电阻测试仪(包括新型革命性塔测试系统)和绝缘电阻测试仪等新型产品。这些产品不仅提高了测试的准确性和效率,还满足了市场对高品质电气测试仪器的需求。同时,公司还不断完善现有产品线,推出了钳形表、变压器变比计、谐波功率计等一系列电气测试仪器,进一步巩固了其在行业内的领先地位。

Alpha & Omega Semiconductor(万国半导体)公司的发展小趣事

随着产品的不断完善和升级,AEMC Instruments公司开始积极拓展市场。公司加强与国际市场的合作,通过参加国际展会、建立全球分销商网络等方式,将产品推向全球。同时,公司还积极寻求与国际知名企业的合作,共同研发新产品和技术,以进一步提升产品的竞争力。这些举措不仅扩大了公司的市场份额,也提高了公司的国际知名度。

3L Electronic Corporation公司的发展小趣事

3L Electronic Corporation深知人才是企业发展的根本。因此,公司注重人才培养和团队建设,为员工提供丰富的培训和发展机会。通过引进优秀人才和建立激励机制,公司形成了一支高效、专业的团队,为公司的持续创新和发展提供了有力保障。

问答坊 | AI 解惑

PAC自动化市场的影响及PLC稳固的市场地位

在今天各类制造厂正在持续地将服务范围从与用户协商转向交钥匙工程全程承包。用户则把更多的精力集中在提高核心竞争力,而把自动化和控制的功能委托给自动化的供应商。这就创造了对服务和支持的更大需求,而PAC的多功能、多专业的能力正是可利用和 ...…

查看全部问答>

绿色绘图软件

这款绘图软件好不好用下载了就知道! …

查看全部问答>

无线数据采集系统

本帖最后由 paulhyde 于 2014-9-15 09:07 编辑 无线数据采集系统  …

查看全部问答>

没有并口下载线怎么办!!!

我用的是周立功的EasyFPGA030,它只支持并口下载的,但是现在手上没有并口的下载线,我的笔记本上也没有,同学也没有!!难道又要花几十甚至几百去买个并口下载线,望高手指点!!!!!!!!!…

查看全部问答>

传感器参数

各位高人:     我现在选用了一个直线位移传感器PY2系列的     它上面写的参数是无限分辨率  位移速度是10m/s     如果我希望测量的位移精度达到0.1mm     怎样从这两个参数中,判断是否满 ...…

查看全部问答>

【求 长城电源ATX-300P4-PFC原理图】

求长城电源ATX-300P4-PFC原理图 实物图如下 …

查看全部问答>

linux-2.6.18内核移植及根文件系统的制做(简易)

linux-2.6.18内核移植及根文件系统的制做(简易) 一、        去 http://www.kernel.org 下载内核,下面以 linux-2.6.18.tar.bz2 为例。         [root@Binnary ~ ]# tar –jxvf linux-2.6.18.tar.bz2 & ...…

查看全部问答>

heihei

爱艺购,艺术的天堂,艺术的宝库,爱好艺术的人都该去看看,获取能找到一件稀世珍宝欧…

查看全部问答>

两段代码,上一段显示为0,,下一段显示为8.。

#include #define uint unsigned int #define uchar unsigned char sbit duan=P2^6;        //申明U1锁存器的锁存端        sbit wei=P2^7;        //申U2锁存器的锁存端 void ...…

查看全部问答>

【为C2000做贡献】ucos在2812上的移植

ucos在2812上的移植,大家也跑跑系统…

查看全部问答>