低级程序员应具备哪些技能?

10 embedded low-level

我是一名嵌入式软件工程师,拥有不到3年的经验.我的目标是不断"磨锯".我想知道C/C++程序员应该熟练掌握低级编程的具体内容.

我想到的是熟悉硬件的架构和指令集.知道如何摆弄位也很重要,资源管理和性能已经成为我工作的一部分,还有什么吗?

编辑:我使用内部定制的RTOS,而不是嵌入式Linux.

old*_*mer 13

我在这里看到了很多高级操作系统的答案,但是你特意说低级别.

一些分散的想法:

  • 设计测试.当您解决问题时,每次测试一次只能改变一件事.
  • 你需要了解总线和接口,spi,i2c,usb,ethernet等.排名第一的接口,今天,昨天和明天,uart,serial.
  • 编程闪存所涉及的步骤.
  • 避免使产品易于砌砖的技巧.
  • 一般的Bootloader.
  • 在各种器件系列上面的所述接口上进行位冲击(不同的芯片供应商对io引脚,上拉,方向控制等有不同的想法).
  • 电路板和芯片的启动,你肯定永远不想在第一次上电时启动成千上万行代码程序(想想导致,领导下).
  • 如何在不使用太多测试设备(逻辑分析仪和示波器)的情况下调试产品,同时您必须学习使用示波器进行调试,如果您不需要技术或工程师,则更有价值在实验室和你一起.
  • 你会如何重新编程现场的单位?在允许用户现场升级设备时,如何最大限度地减少人为错误?还记得现场降级.
  • 你会做什么来阻止黑客攻击(二进制文件等).
  • 有效使用闪光灯/光圈(不要磨损一个银行或部分,散布磨损,或看看闪光灯是否正在为你做).
  • 如何以及何时使用看门狗定时器.
  • 状态机,对字节流(串行和以太网)非常有用,设计流式传输良好且适合状态机的数据包结构,并且具有标头和校验和或其他结构,可确保您不将部分数据包或随机数据解释为好包.


nik*_*nik 11

具体概念如,

  1. Endianness(这个链接是一篇陈旧但很好的linuxjournal文章)
  2. 有效使用多线程架构(嵌入式站点通常很好)
  3. 调试嵌入式多线程系统
  4. 理解,学习和遵循良好的编程技术(链接非常古老,非常通用和主观,但请考虑一下)
  5. 其他的东西(嵌入式linux上的这个IBM页面总结了我想要制作的大多数其他点)
  6. 还有一件事 - 永远不要低估测试!或者,计划测试用例!!

使用我提供的参考链接作为概念,
请进一步了解更深入的知识.


sam*_*moz 9

我正在研究实际芯片的电子产品.了解它们如何在内部工作(例如架构),与外围设备的接口,电气和时序特性等.

基本上,阅读数据表开始几次完成,并挖掘你以前没见过/使用过的任何东西.

顺便问一下,你使用什么芯片?


Vin*_*nie 7

Brian说的相似,学习如何创建单元测试自动构建.

这些技能对于熟练掌握各级软件工程师都有好处.它们有助于提高代码质量,同时还可以更轻松地重构和改进代码库.