HDL:中立派、激进派与保守派 技术 设计逻辑芯片是个大工程,设计师描述芯片内部逻辑的方法是一种叫做HDL(硬件描述语言)的语言,工业界目前广泛使用Verilog和VHDL 正如软件中,同一种编程语言在描述同一逻辑功能时采用不同的写法会在可读性、性能等方面存在差别,在硬件中,同样是Verlog语言采用不同编码风格设计的同颗芯片在各方面指
[bootloader]链接脚本 技术 起因 有一个string.c 程序,其中有几种不同的全局变量: 初始化的全局变量str1,其值是一串字符,占6个字节 初始化的全局变量s,其是一组(指向常量字符串的)指针,占6 * 4 = 24 = 0x18个字节 未初始化的全局变量str,大小为0 char *s[] = { "aaaaaaaa
AXI4-Lite的注意要点 技术 时钟和复位 主从接口的输入输出之间不能是组合逻辑 可以异步复位,但是复位到低只能是在上升沿复位 复位时,主从输出通道的valid都必须拉低,其他信号无所谓 握手过程 源VALID发出后直到握手成功之前,不能改变VALID A source
C++编程思想-异常处理 技术 异常 概述 当程序代码出现异常的时候,当前语境无法提供足够的信息用以决定处理方式的时候,程序员通常会抛出异常,C++中throw 用于抛出异常 #include <iostream> class myErr { private: std::string _msg; public: myErr(s
Linux静态库链接顺序问题 技术 静态库要按顺序排列 比如main.c中包含了func.h头文件,而func.c被做成了libfunc.a静态库,那么编译时就必须按顺序排列main.c和libfunc.a: gcc main.c libfunc.a -o main 否则就会报undefined reference错误 同理,如果静态
基于ESP32S3自制力反馈设备 技术 这篇文章使用ESP32S3实现了一个力反馈设备驱动,目前在尘埃拉力赛2.0和欧卡上测试还比较正常,但是依然存在一些小的问题,此文仅以用来记录学习和探索的过程。 材料选型 主控选用esp32s3;电机驱动选用的是Odriver,使用CAN通信和电机通信。 参考资料 USB-HID Usage Tabl
C语言“脑筋急转弯” 技术 总结一些遇到的C语言的“奇妙”例子,虽然应用上没什么卵用,但是可以考察对细节的理解 i++和++i谁快 结论 ++i更快: i++相比++i,多一步将自加的i赋值给寄存器的指令,相当于创建临时变量。 虽然在这里只相差一条指令,但是如果i为类对象,那么i++多出的创建临时变量的指令会更多