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

2015-10-07 16:59:12 +08:00
 ccen3020
以前接触过 51 和 C2000 ,相对来说比较简单所以只要照着 PDF 去改寄存器就好了
最早从 51 入门,学的还算透彻。 C2000 基本就是单片机的用法所以上手很快,也没有多少纠结的地方。

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

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

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

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

除非有明确应用场合,不然还是不要蜻蜓点水的好。
ccen3020
2015-10-07 19:40:04 +08:00
@circsqua
不要蜻蜓点水是什么意思?
如何比较系统地学习?
zackkson1991
2015-10-07 21:39:33 +08:00
也是没有什么的。根据正点原子的例程学习即可(这个从他的论坛即可有很多的资料),我建议是从函数库学习,其他我觉得没必要直接写寄存器。这样容易出错而且浪费时间。通过教程从基本的 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
2015-10-07 23:04:34 +08:00
@zackkson1991
看了下,感觉应该不错
视频好大 T.T
deben
2015-10-07 23:10:43 +08:00
如果只做应用,不用管那些寄存器什么的,直接对着手册配置就好了。如果想玩的深入,个人认为可以搞个 FPGA 里面放个 MCU ,这样下来,什么硬件都懂了!我的想法有点偏激:)
qian19876025
2015-10-07 23:18:34 +08:00
楼主你到底是要学习什么 你要搞清楚才行
如果是为了控制硬件 那应该是 驱动的方向 需要汇编 看寄存器 要学 IRQ
如果是为了要学习软件 那就是写普通程序

实时系统 和 普通分时系统的是有区别的
实时系统 顾名思义 是对 时间有比较严格的要求 比如每个任务 运行多久 成功与否 之类的 我记得 ucos 的讲解里面应该有
分时系统那就是另外一套哲学了
百度百科之类的 有讲解 当然如果能翻墙看 wiki 也是一种方法
你说麻烦 的确麻烦 你说简单 也可以比较简单 根据具体的任务 需求 来实现程序
zackkson1991
2015-10-08 11:45:54 +08:00
@ccen3020 我建议这个平台的会用就可以了,侧重点应该是自身的编程能力。稍微花费多一点点时间即可。过程中打好 C/C++的基础很重要。早上 Linux 以及安卓。 RTOS 可以留意一下 RT-THREAD..
ccen3020
2015-10-08 22:19:11 +08:00
@qian19876025
我对底层和上层的概念不清楚
大学都是从画板子到搭起来完整系统的,还没用过 RTOS
两个关系不是很大对吧?
主要是对 RTOS 理解不清不知道怎么啃
ccen3020
2015-10-08 22:25:02 +08:00
@zackkson1991
linux 更费精力吧……
其实也想买树莓派来着但是还是忍住了
zackkson1991
2015-10-09 12:06:42 +08:00
@ccen3020 你要学习当然要花费精力,树莓派我觉得用来玩玩,但是真正学习还是买书买开发板学习。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/226098

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX