打印
[嵌入式linux]

我该怎么学嵌入式C编程???

[复制链接]
2410|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小海豚|  楼主 | 2013-8-30 16:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
领导要求我自学嵌入式,给了很多资料(C语言课本、C规范、MPLAB编译器说明书、还有一个单片机的说明书、然后给我了个Mplab软件)说这些都要看,可是我现在看了两周了,一点进展没有,感觉没有方向,不知道该往哪使劲,而且光看文字也看不下去,怎么办??过段时间就要考查自学的成果了,怎么办呐:Q谁给指条明路啊,谢谢啦谢谢:handshake

相关帖子

沙发
wangch_sh| | 2013-8-30 17:41 | 只看该作者
不能光看书,要动手实践。MPLAB也可以软件仿真的。

使用特权

评论回复
板凳
小海豚|  楼主 | 2013-8-30 22:33 | 只看该作者
怎么看,怎么仿真啊,,先看哪一个?该怎么看,有木有重点?木有老师带着学习真的很难那

使用特权

评论回复
地板
小海豚|  楼主 | 2013-8-30 22:44 | 只看该作者
大神们多指教下吧,俺是电子信息专业刚毕业滴,是工作需要也是对这方面有兴趣,我必须在段时间里学出点成绩来,拜托各位大神了

使用特权

评论回复
5
jlass| | 2013-9-2 08:48 | 只看该作者
小海豚 发表于 2013-8-30 22:44
大神们多指教下吧,俺是电子信息专业刚毕业滴,是工作需要也是对这方面有兴趣,我必须在段时间里学出点成绩 ...

那不就很简单吗,直接去问你的大学老师啊,我们刚毕业那一会都这么干。

使用特权

评论回复
6
xunchangreng| | 2013-9-2 15:14 | 只看该作者
先买一个ARM9的运行linux系统的开发板,动手玩残它,估计很快就会了!

常见的嵌入式linux学习和如何选择ARM芯片的10个问答:

1.          ARM嵌入式是学习硬件好还是学习软件好?
      答:
         学习硬件好还是软件好,如果你能精通其中的任何一个,都好!
       学硬件,绝大多数人大学毕业后都可以做硬件设计,这时候大家是一个差不多的水平线上,所以感觉上好像没有门槛!但是电子产品设计的难点是稳定性,尤其是电 磁兼容性的设计。N年之后,也许三年,也许五年,也许八年,总之年数不等,这时候水平上就有了高低之分:有些人设计出来的电子产品就是不怎么出问题,有些 人设计出来的电子产品就是一直有问题。硬件的设计,是设计经验和理论再学习的结合:电磁场与电磁波、微波与天线、高速信号处理、信号完整性、PCB布线的 实际措施、系统电磁兼容的处理措施、电路调试的能力与解决电路故障的能力,等等,
    学软件,很多人大学毕业后都无法从事这个设计工作,因为大家在学校的努力程度不同,很多人实际上还没有进入编程的门槛内。但是进入门槛后,绝大多数人的水平 会处于差不多相同的水平线上,极个别的水平高一些,体现在程序的稳定性和程序运行效率上。软件的设计,主要体现在这两点
    单片机的硬件和软件,因为主频太低,很少出现稳定性的问题,软件的工作量也小,很多单位的软硬件都是一个人做。但是到了主频很高的32位微处理器后,硬件的稳定性特别容易出问题,功能复杂度增大,硬件设计的难度增加了,软件编程的工作量加大了,所以多数公司的软件和硬件开始有多人分开设计。树叶有专攻!大树叶负责系统设 计,各种小树叶有的做硬件设计,有的做软件编程。宗旨就是发挥各自的强项!完成最后的系统功能设计
   另外一个需要强调的是,学习硬件还是软件,还要看个人对硬件感兴趣,还是对软件感兴趣?

2.          嵌入式软件和硬件,哪一种职位待遇更高?或者说,在设计中哪一个更重要?
       答:
     刚进入职场时,一般来说嵌入式软件的待遇会稍高一些。因为之前说了,很多人没有进入软件设计的门槛内。但是软件毕竟是青春性的职业,随着年龄的增加和设计经验、设计能力的增加,硬件设计的待遇水涨船高,慢慢会与软件职位的待遇相同甚至高于软件的职位。
     至于谁更重要,硬件相当于躯体,软件相当于血液,缺一不可,没有谁更重要的说法。如果从产品的角度看,硬件更重要一些。因为在产品中出了问题,硬件的稳定性问题基本上只有找高手重新设计,如果是电路原理上的问题还可以直接增加或者减少元件来解决。软件上不稳定问题基本上可以通过修改程序设计并重新下载程序到芯片中来解决。如果从设计的角度看,系统设计更重要,因为系统设计要求懂一些软件的基本设计,更要对硬件设计有相当的造诣,这样他才能把握住系统设计的要求,正确提出设计方案。

3.        学完51单片机后,想买ARM开发板继续学习,是买ARM7还是ARM9?
      答:
        如果你对单片机动手编程能力比较强,建议直接买ARM9的板子,跑linux系统的,学习嵌入式linux软件编程,比如盘古AT91SAM9260工控级开发板。
       如果你的单片机动手编程能力比较一般,建议先购买CORTEX-M3的开发板,比如盘古STM32开发板和盘古LPC1768开发板,先学习32位ARM的编程(支持轻量级的操作系统,比如UCOS),锻炼实际的动手编程能力。有了一定的编程能力后,再买ARM9的板子,跑linux系统的,学习嵌入式linux软件编程。
       总之就是多动手,遇到问题多了慢慢积累起来,就能够融会贯通了!

4.        到底是学习哪种内核:ARM7、CORTEX-M3、CORTEX-M4、ARM9、CORTEX-A8还是CORTEX-A9?
      答:
        首先说明基于ARM7内核的芯片现在已经很少了,大部分公司都陆续停产了。而且价格没有优势,主频也不高,只能跑UCOS或者Uclinux系统。所以不建议花大量的时间去玩这种ARM7内核的芯片
        CORTEX-M3内核的芯片是目前用量比较大的32位ARM芯片,主频约70MHz到180MHz之间,比如STM32F103、LPC1768等型号。CORTEX-M4内核的芯片支持DSP指令功能,主频100MHz到200MHz之间,比如STM32F4等型号。这两种内核的芯片可以基于库函数进行编写程序,或者基于寄存器直接编写程序,可以跑轻量级的操作系统,比如UCOS等。此类芯片只适合设计不太复杂的产品,对网络协议有一定要求的产品不建议使用该芯片。
      ARM9内核的芯片,是目前市场上运行嵌入式操作系统(linux、wince)主流的32位ARM芯片,主频约180MHz到500MHz之间。
      CORTEX-A8和CORTEX-A9内核的芯片,可以运行多种嵌入式操作系统(linux、wince、android)。Cortex-A8处理器的速率可以在600MHz到超过1GHz的范围内调节,能够满足那些需要工作在300mW以下的功耗优化的移动设备的要求。Cortex-A9处理器的速率可以到1GHz以上,支持多核。
     如果是初学者,学习库函数编程的或者寄存器编程的,建议学习基于CORTEX-M3内核的芯片的开发;如果是学习linux的嵌入式软件编程,建议学习基于ARM9内核的芯片的开发板;如果是学习Android的嵌入式软件编程,建议学习基于CORTEX-A8和CORTEX-A9内核的芯片的开发板;

5.        ARM芯片如何选择型号?
答:
  ST公司:基于CORTEX-M3内核的芯片STM32F103、基于CORTEX-M4内核的芯片STM32F4,是目前最流行的CORTEX-M3内核的芯片。

  N XP公司:基于CORTEX-M3内核的芯片LPC1768、LPC1788、基于CORTEX-M0+内核的芯片LPC800系列,ARM9内核的芯片LPC3250,在设计中的认可率都比较高。

     ATMEL公司:一直采用ARM核心技术, ARM9内核的芯片做了很多年才开始升级更高的内核,旨在打造稳定的工业级芯片,不追求主频上的卓越,但求性能更加的可靠的工业级芯片。能克服各种恶劣的环境,及各种干扰,功耗低,让工业控制能更加稳定有条不紊的进行。现在的ARM9内核芯片有AT91SAM9260、AT91SAM9263、AT91SAM9G45等

       德州仪器TI: 一直致力于研究处理速度更快,功能更加强大的芯片。更是采用ARM最新技术Cortex A8来提升芯片的性能。使得一些芯片的处理速度与X86架构的MCU不分伯仲。但是最近OMAP系列芯片据说被裁了,可能会退出市场。这让选择TI芯片的人心里有点害怕!而且,TI的芯片更新速度太快,让选择他们芯片的厂家也无所适从。现在的CORTEX-A8内核芯片有AM3358、AM3359等。

        SAMSUNG半导体: SAMSUNG生产ARM内核芯片的超高性价比是无人能敌的。正因为这点, 其芯片也得到很多厂家的亲睐。例如S3C2440性价比极高,一般消费电子产品中应用较多,不适于在严苛的工控环境中使用。现在的ARM9内核芯片有S3C2440、CORTEX-A8内核芯片S5PV210等。

     最近老是看到不少个人和厂家宣传:使用三星的2440或者三星公司的其他型号设计为工控产品,而且我听到不少厂家说芯片的工作温度都做过老化试验,低温可以到零下40度。这个低温的实验条件只是工业级的一个强制性温度试验条件,并不是在这个低温下正常工作就是工控级芯片。工控级的应用真正难以实现的是在各种恶劣电磁环境下的稳定工作,可惜大部分芯片都不能实现这种要求。稳定性是工控级应用的第一要素,这也就是为何ATMEL的芯片很多型号一卖就是十几年,他们的芯片做的就是稳定。比如AT91RM9200、AT91SAM9260、AT91SAM9G45等.

6.        学习ARM主要学习啥?
答:
   在硬件上主要学习ARM内核芯片的电路设计及其附加外围电路(USB、SDIO、CAN、485、SPI、PCI等)设计以及高速数字信号处理、信号完整性设计、电磁兼容设计,说白了就是学习如何设计出高稳定的ARM系统电路。ARM内核(CORTEX-M3、CORTEX-M4、ARM9、CORTEX-A8、CORTEX-A9等)的芯片,主频越来越高,实现稳定性的设计难度越来越大。
     软件上主要学学习基于操作系统的应用层程序的编程和基于操作系统的驱动程序编程或者基于库函数的裸机程序编程等等。CORTEX-M3、CORTEX-M4内核的芯片,可以运行裸机程序或者轻量级的UCOS系统,软件上主要学习裸机程序的编程; ARM9、CORTEX-A8、CORTEX-A9内核的芯片,可以运行linux操作系统、android操作系统、wince操作系统等,学习基于操作系统的应用程序编程 和 驱动编程

7.        是先学习基于操作系统的应用层程序的编程,还是先学习基于操作系统的驱动程序的编程?
    答:
          基于操作系统的应用层程序的编程是嵌入式软件设计的基础,它基本上可以不需要熟悉底层硬件就可以完成程序设计,所以学习嵌入式linux应用程序编程买开发板时,只要可以运行linux系统的开发板都可以。。基于操作系统的驱动程序的编程设计,要求设计人员不仅要熟悉操作系统,还要熟悉底层硬件,最好有过基于寄存器的程序编写经历,对设计人员的要求比较高。
        现在的驱动程序的编程设计,芯片原厂和开发板厂家已经提供大部分了。在芯片原厂做驱动程序设计的人员,水平会高得多,不过中国的芯片厂很少,大家暂时没多少机会。从产品的设计角度看,驱动程序的设计难度已经降低。
        所以建议:先学习基于操作系统的应用层程序的编程,有了一定的编程经验后再去学习基于操作系统的驱动程序的编程设计。

其他的内容见下面的文档!

北斗 & GPS车载监控平台.pdf

710.58 KB

嵌入式实验室建设方案.pdf

1.26 MB

实践电磁兼容设计之PCB基本布线措施.rar

4.82 MB

实践电磁兼容设计-目录.pdf

134.31 KB

常见的嵌入式linux学习和如何选择ARM芯片问答.pdf

353.19 KB

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
小海豚 + 1 赞一个!
7
jack_icc| | 2013-9-5 09:45 | 只看该作者
我也是困在这里,以前从事8位单片机开发,没学过上位机与系统开发,现在想尝试学一下嵌入式开发,如今的ARM芯那么多,不知道选那个入门好!

使用特权

评论回复
8
ithinksozheng| | 2013-9-8 11:43 | 只看该作者
6楼回答得真好  学习了!!

使用特权

评论回复
9
zdhlixiang2006| | 2013-9-8 16:20 | 只看该作者
我觉得这东西是是一个单片机应用到一定程度自然而然就接触到的领域,刚毕业还是不要眼高手低

使用特权

评论回复
10
Schvian| | 2013-9-8 17:29 | 只看该作者
单片机技术还要结合自己的专业特长才有意义么,器件的更新淘汰速度这么快,没有自己的专业领域的积累,会用再多牌子的单片机有什么意义呢

使用特权

评论回复
11
zmdhz| | 2013-9-30 11:14 | 只看该作者
建议学习arm9,推荐三星的2416

使用特权

评论回复
12
shangken| | 2013-9-30 11:33 | 只看该作者
这么好的老板哪找去啊,我们还都是自己买的,幸福的孩子。

使用特权

评论回复
13
wdliming| | 2013-10-1 21:09 | 只看该作者
还有这么好的老板啊~还给资料~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

37

帖子

0

粉丝