V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ccen3020
V2EX  ›  问与答

请问学习 Cortex-Mx 的话,应该从哪里入手?

  •  
  •   ccen3020 · 2015-10-07 16:59:12 +08:00 · 2772 次点击
    这是一个创建于 3365 天前的主题,其中的信息可能已经有所发展或是发生改变。
    以前接触过 51 和 C2000 ,相对来说比较简单所以只要照着 PDF 去改寄存器就好了
    最早从 51 入门,学的还算透彻。 C2000 基本就是单片机的用法所以上手很快,也没有多少纠结的地方。

    早就知道 ARM 很好玩但是一直没机会用,工作之后买了块 DISCOVERY 却一直在吃灰
    可是到了 ARM 就变得好复杂,特性比 MCU 丰富太多
    然后又说 ARM 不跑操作系统就没有任何意义,而操作系统这方面从来没有接触过,感觉很头大
    找了本 UC/OS 的书是讲任务调度如何实现之类的原理,基本硬件无关
    然后 CORTEX-M3 权威指南是讲内核特性和指令集,基本没有软件什么事
    感觉两个都很偏重原理,不大像初学者应该掌握的东西

    所以应该如何入门?学习的时候应该偏重哪些方向?
    操作系统的概念需要掌握吗?需要了解到什么程度?
    RTOS 和 linux 这种系统有什么区别?为什么叫 Real Time ?
    只是中断的话, x86 上也有中断,为什么会专门强调实时?
    各个 RTOS 之间的特性之类的区别大吗?应该如何选择,还是只要随便瞅准一款用到死就好了?

    目前来看工作上还没用得到 ARM 的地方,所以只是当做知识储备
    12 条回复    2015-10-09 12:06:42 +08:00
    rming
        1
    rming  
       2015-10-07 17:18:01 +08:00 via iPhone
    以前用过 stm32 , mcu 强大了,周边组件自然可以支持更多,常见外围电路,常见应用,代码的话,可以直接看手册,操作寄存器,也可以用函数库,就是别人的封装,各有优劣

    然而,我现在改写 web 了……
    ccen3020
        2
    ccen3020  
    OP
       2015-10-07 18:49:24 +08:00
    @rming 如何上手?以及目前对 task 的创建啦切换啦之类的并不是很明白,应该看什么东西?
    我倾向于学习如何用,明白如何用了再回头看原理
    circsqua
        3
    circsqua  
       2015-10-07 18:51:36 +08:00
    物理上发生中断,到系统运行到中断处理函数,需要一定的时间。如果需要高速响应的话, X86 太慢, RTOS 好一些,裸跑 C 快一些,裸跑汇编最快;更快只能门电路了。
    简单的说, RTOS 不能像通用 OS ( Linux )那样安装应用;添加新功能只能添加代码编译进系统。

    除非有明确应用场合,不然还是不要蜻蜓点水的好。
    ccen3020
        4
    ccen3020  
    OP
       2015-10-07 19:40:04 +08:00
    @circsqua
    不要蜻蜓点水是什么意思?
    如何比较系统地学习?
    zackkson1991
        5
    zackkson1991  
       2015-10-07 21:39:33 +08:00   ❤️ 1
    也是没有什么的。根据正点原子的例程学习即可(这个从他的论坛即可有很多的资料),我建议是从函数库学习,其他我觉得没必要直接写寄存器。这样容易出错而且浪费时间。通过教程从基本的 IO 操作到串口, ADC,SPI , i2c 以及 USB ,然后上液晶显示(FSMC)以及文件系统(fatfs ,使用 SPI 或者 SDIO 或者 USB 作为底层接口),当然网络最后是大块啦(lwip 协议,不同芯片使用不同的接口,由于前面学习了液晶有了 FSMC 接口,可以使用 FSMC 接口来驱动 DM9000 等芯片,也可以不同系列(F107)的 M 芯片有网络硬件接口)。记得还有很不多的关于 FSMC 驱动 NAND/NOR FLASH 芯片的例程,真心不错的。前面玩过一遍后,个人感觉对于芯片的接口以及实际应用都有很好的理解了。后面可以学习 UCOS 了,了解 RTOS 的基本使用了,比如时间片,多任务,信号量等等~在工作中很多时候都是需要 RTOS 的.过了一遍,做一个简单的小项目即可。后面,建议一遍锻炼好 C 语言, C++也是需要的。上手 ARM+LINUX,以后走安卓路线。
    本人 14 年毕业,毕业后的半年还是搞车载,刚好也是 STM32 的。不过在这半年我转向了 iOS 方向了,不在做嵌入式。
    ccen3020
        6
    ccen3020  
    OP
       2015-10-07 23:04:34 +08:00
    @zackkson1991
    看了下,感觉应该不错
    视频好大 T.T
    deben
        7
    deben  
       2015-10-07 23:10:43 +08:00 via Android
    如果只做应用,不用管那些寄存器什么的,直接对着手册配置就好了。如果想玩的深入,个人认为可以搞个 FPGA 里面放个 MCU ,这样下来,什么硬件都懂了!我的想法有点偏激:)
    qian19876025
        8
    qian19876025  
       2015-10-07 23:18:34 +08:00
    楼主你到底是要学习什么 你要搞清楚才行
    如果是为了控制硬件 那应该是 驱动的方向 需要汇编 看寄存器 要学 IRQ
    如果是为了要学习软件 那就是写普通程序

    实时系统 和 普通分时系统的是有区别的
    实时系统 顾名思义 是对 时间有比较严格的要求 比如每个任务 运行多久 成功与否 之类的 我记得 ucos 的讲解里面应该有
    分时系统那就是另外一套哲学了
    百度百科之类的 有讲解 当然如果能翻墙看 wiki 也是一种方法
    你说麻烦 的确麻烦 你说简单 也可以比较简单 根据具体的任务 需求 来实现程序
    zackkson1991
        9
    zackkson1991  
       2015-10-08 11:45:54 +08:00
    @ccen3020 我建议这个平台的会用就可以了,侧重点应该是自身的编程能力。稍微花费多一点点时间即可。过程中打好 C/C++的基础很重要。早上 Linux 以及安卓。 RTOS 可以留意一下 RT-THREAD..
    ccen3020
        10
    ccen3020  
    OP
       2015-10-08 22:19:11 +08:00
    @qian19876025
    我对底层和上层的概念不清楚
    大学都是从画板子到搭起来完整系统的,还没用过 RTOS
    两个关系不是很大对吧?
    主要是对 RTOS 理解不清不知道怎么啃
    ccen3020
        11
    ccen3020  
    OP
       2015-10-08 22:25:02 +08:00
    @zackkson1991
    linux 更费精力吧……
    其实也想买树莓派来着但是还是忍住了
    zackkson1991
        12
    zackkson1991  
       2015-10-09 12:06:42 +08:00
    @ccen3020 你要学习当然要花费精力,树莓派我觉得用来玩玩,但是真正学习还是买书买开发板学习。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5690 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:09 · PVG 11:09 · LAX 19:09 · JFK 22:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.