• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

stm32可不可以移植linux系统,移植后效果怎么样?

mingming 2017-09-08 浏览量:3652
RT
-1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案

其他答案 数量:18
  • 不行,单片机没有mmu,只能移植一些小型的RTOS,如ucos之类的。

    • 发布于2017-09-08
    • 举报
    • 评论 0
    • 2
    • 0

  • stm32没有MMU单元,不能移植完整功能的Linux系统哦。不过可以移植uCLinux。

    uCLinux设计针对没有MMU的处理器,不使用处理器的虚拟内存管理技术​。

    • 发布于2017-09-08
    • 举报
    • 评论 0
    • 0
    • 0

  • STM平台且满足实时控制要求操作系统,有以下4种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这四种嵌入式操作系统的特点及不足。 1、μClinux μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。 μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式CPU特点进行改良,且不支持内核抢占,实时性一般。 在内存管理上由于μClinux是针对没有MMU的处理器设计的,不能使用处理器的虚拟内存管理技术,只能采用实存储器管理策略。系统使用分页内存分配方式,在启动时对实际存储器进行分页。系统对内存的访问是直接的,操作系统对内存空间没有保护,多个进程可共享一个运行空间,所以,即使是一个无特权进程调用一个无效指针也会触发一个地址错误,并有可能引起程序崩溃甚至系统崩溃。 μClinux操作系统的中断管理是将中断处理分为两部分:顶半处理和底半处理。在顶半处理中,必须关中断运行,且仅进行必要的、非常少、速度快的处理,其他处理交给底半处理;底半处理执行那些复杂、耗时的处理,而且接受中断。因为系统中存在有许多中断的底半处理,所以会引起系统中断处理的延时。 μClinux对文件系统支持良好,由于μClinux继承了Linux完善的文件系统性能,它支持ROMFS、NFS、ext2、MS-DOS、JFFS等文件系统。但一般采用ROMFS文件系统,这种文件系统相对于一般的文件系统(如ext2)占用更少的空间。但是ROMFS文件系统不支持动态擦写保存,对于系统需要动态保存的数据须采用虚拟RAM盘/JFFS的方法进行处理。 在对硬件的支持上,由于μClinux继承了Linux的大部分性能,所以至少需要512KB的RAM空间,lMB的ROM/Flash空间。 在μClinux的移植方面,。μClinux是Linux针对嵌入式系统的一种改良,其结构比较复杂。移植μClinux,目标处理器除了需要修改与处理器相关的代码外,还需要足够容量的外部ROM和RAM。 综上可知,μClinux最大特点在于针对无MMU处理器设计,这对于没有MMU功能的stm32f103来说是合适的,但移植此系统需要至少512KB的RAM空间,1MB的ROM/FLASH空间,而stmf103拥有256K的FLASH,需要外接存储器,这就增加了硬件设计的成本。
    • 发布于2017-09-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 没必要这么做,linux有linux的功能,单片机有单片机的功能,移植出来效果很差,而且比单片机做的效率低。
    • 发布于2017-09-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 不行的 配置和内存都不行 不到1MB的存储空间内核都不够
    • 发布于2017-09-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 不可以移植linux系统,因为没有内存管理单元。

    但是可以移植uboot。

    • 发布于2017-09-08
    • 举报
    • 评论 0
    • 0
    • 0

  • hanyun0058.JPG


    uClinux下STM32开发环境搭建(中文)
    https://wenku.baidu.com/view/55c85d0090c69ec3d5bb757e.html

    移植uClinux内核到stm32f407
    http://blog.csdn.net/jccg89104/article/details/64125973

    • 发布于2017-09-08
    • 举报
    • 评论 0
    • 0
    • 0

  • STM32这样的的单片机属于MCU,与CPU最大的区别在于不存在MMU(内存管理单元),而像Linux、WinCE等嵌入式系统运行的条件是需要MMU的,所以MCU并不能运行Linux系统。不过可以运行实时的Linux,比如RT-Linux、UCLinux等,实际上RT-Thread和Linux很相似。
    • 发布于2017-09-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 知乎上有这个问题解答:

    https://www.zhihu.com/question/24438248/answer/102554410​

    • 发布于2017-09-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以移植uclinux,那个是针对没有MMU的单片机的,不过比较占资源
    • 发布于2017-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 事實上是不行的,而ucLinux基本上不太能算Linux

    整個框架也不盡相同,說成RTOS可能比精簡Linux還恰當一點

    MMU是運行完整Linux系統的關鍵

    定位不同還是將他用RTOS就好


    • 发布于2017-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • MCU类的应该是运行RTOS之类的实时系统比较好

    而MPU类的运行Linux系统比较好

    各有不同各有方向,MCU最好不要移植linux,意义不大。

    • 发布于2017-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实就是不行,移植的也是阉割版,好多功能不能实现的。
    • 发布于2017-09-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 在flash和ram分别大于4M,32M的情况下,移植linux的变种ulinux有实际的意义。
    • 发布于2017-09-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 不能移植linux但可以跑其他的如ucos
    • 发布于2017-09-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 不能的。

    没有内存管理的。

    Linux运行要很大的内存的,片上的不够

    • 发布于2017-09-20
    • 举报
    • 评论 0
    • 0
    • 0

电子老工程师 回复了  :SS16 Hottech(合科泰) 回复

相关问题

问题达人换一批

stm32可不可以移植linux系统,移植后效果怎么样?