散装知识点2

1. **volatile是否可以修饰const**

- 可以,`volatile const`用于描述那些在程序运行过程中其值可能被外部因素(如硬件或并发线程)改变,但又不允许程序修改的变量。

 

2. **如何快速一行代码操作硬件寄存器**

- 使用位带操作或直接对寄存器地址进行读写,例如:`*(volatile uint32_t *)(0x40021000 + 0x04) |= (1 << 3);`

 

3. **如何最快比较两组寄存器里有多少位不同**

- 使用异或运算,然后计算结果中的1的个数,可以使用位计数指令如`popcnt`。

 

4. **如何降低功耗**

- 关闭未使用的外设,使用低功耗模式,优化代码减少处理器空闲等待。

 

5. **什么时候会用到do{}while(0)**

- 构造宏时确保代码块的正确性,防止意外的分号导致宏展开错误。

 

6. **GPIO有几种状态**

- 输入、输出、高阻态、上拉、下拉等。

 

7. **如何用软件处理硬件管脚抖动**

- 使用软件延时滤波或状态机检测稳定状态。

 

8. **如何高效处理中断**

- 设置中断优先级,避免中断嵌套,最小化中断服务例程的执行时间。

 

9. **delay和sleep的区别**

- `delay`通常阻塞当前执行流,`sleep`可能涉及系统调用,让出CPU。

 

10. **中断时可否睡眠**

- 不推荐,中断应尽快返回,不应做长时间操作。

 

11. **如何设计RAM和flash的验证工具**

- 使用CRC校验和、MD5哈希或其他完整性检查算法。

 

12. **如何合理高效静态分配内存**

- 根据最大需求预分配,使用内存池减少碎片。

 

13. **如何跟踪内存泄漏**

- 使用动态内存管理库提供的统计功能或专门的内存泄漏检测工具。

 

14. **如何实现一个ring buffer以及用途**

- 实现循环指针和头尾指针,用于缓冲区,用于数据流处理和通信。

 

15. **DMA和FIFO的区别**

- DMA用于数据传输,FIFO是一种存储结构,DMA可以利用FIFO作为缓冲。

 

16. **如何做到统一API对接不同外设驱动**

- 设计抽象层,提供通用接口。

 

17. **如何合理设计flash分区表**

- 考虑应用需求、更新策略、磨损均衡和冗余。

 

18. **正常非掉电重启是否要释放内存**

- 重启前释放资源有助于系统的稳定性和初始化。

 

19. **正常掉电关机流程是否要释放内存**

- 同上,但要考虑持久性数据的保存。

 

20. **非掉电异常如何处理**

- 异常处理程序捕获异常,记录错误,尝试恢复或重启。

 

21. **如何实现异常后的dump**

- 记录关键寄存器和内存状态,保存在非易失存储中。

 

22. **非正常掉电如何保护**

- 使用UPS或电池备份,存储关键数据到非易失存储。

 

23. **如何设计一个简单的profiling工具**

- 记录函数调用时间和次数,分析性能瓶颈。

 

24. **低功耗深睡眠如何唤醒后继续之前工作**

- 保存状态到非易失存储,唤醒后恢复状态。

 

25. **RTOS不能断点和打印的时候如何调试**

- 使用硬件调试器或日志记录和故障注入测试。

 

26. **什么是交叉编译**

- 在一个平台上生成另一个平台可执行代码的编译过程。

 

27. **如何保证makefile的增量编译**

- 使用依赖关系和文件时间戳。

 

28. **如何用一套代码支持不同硬件**

- 使用抽象层和条件编译。

 

29. **如何用一版软件支持不同硬件**

- 设计模块化架构,硬件无关接口。

 

30. **不同代码编译后的存放区域有何不同**

- 代码段、数据段、BSS段,根据类型和属性存放。

 

31. **release和debug编译的区别**

- Release优化代码,Debug包含调试信息和符号。

 

32. **ARM多核之间有多少通讯机制及优缺点**

- 共享内存、消息传递、中断,各有适用场景和效率差异。

 

33. **两个线程之间不同锁的区别是什么**

- 互斥锁、读写锁、自旋锁,适用于不同同步需求。

 

34. **如何理解收益边界**

- 性能提升与成本、复杂度之间的权衡点。

 

35. **介绍一下自己关于代码优化的经验**

- 分析热点,先考虑算法和数据结构,再进行微调。

 

36. **关于代码移植有什么经验分享**

- 尽早识别硬件特异性代码,使用标准库和接口,保持良好的编码规范。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值