摘要:
最近在调研STM32 F10X,准备把公司AVR的MCU项目迁移到STM32上。在调研STM32 i2c这一部分时,在与i2c slave硬件连接断开后,这时再去读/写 i2c slave需要STM32这边的i2c_read/write函数做一些处理。 刚开始在i2c读写timeout后,添加了如下 阅读全文
摘要:
STM8S是8 bit单片机在STM8S中 unsigned long是32位, unsigned short和unsigned int都是16位,unsigned char是8位。 以以下代码编译时报了“shift count is too large”的warning, 并且代码执行时也没有达到 阅读全文
摘要:
上图是TPS65987的i2c读写协议,和标准i2c协议读写有点出入,实际上是SMBus协议的块读写,即 I2C_FUNC_SMBUS_READ_BLOCK_DATA 和 I2C_FUNC_SMBUS_WRITE_BLOCK_DATA,可参考我的另一篇文章《SMBus协议》。不过也不难理解,在读的时 阅读全文
摘要:
内核第一宏 list_entry()有着内核第一宏的美称,它被设计用来通过结构体成员的指针来返回结构体的指针。现在就让我们通过一步步的分析,来揭开它的神秘面纱,感受内核第一宏设计的精妙之处。 整理分析的思路 list_entry()在内核源代码/include/linux目录下的list.h中被定义 阅读全文
摘要:
公司最近开发的一款产品用到了ambarella H2平台的一款Soc,众所周知ambarella的H2系列的Soc编码能力很强,最高可达4kp60,捕捉上没有用ambarella开发板推荐的几个捕捉卡,是自己用fpga做的一款捕捉卡, 所以捕捉卡驱动需要自己来写。 捕捉卡驱动其实没有什么东西,就是简 阅读全文
摘要:
ambarella H2系列Soc的GPIO口能作PWM使用的个数有限(GPIO0-GPIO3),从PRM里GPIO: Function Selection章节可以得到如何配置GPIO为PWM功能。 假设想把GPIO0配置成PWM输出,根据上图修改ambarella/boards/h2_xxx/bs 阅读全文
摘要:
1 模块参数 定义模块参数 1、module_param(name, type, perm); 定义一个模块参数, name 变量名 type 数据类型 bool:布尔型 invbool:一个布尔型( true 或者 false)值(相关的变量应当是 int 类型).invbool 类型颠倒了值,所 阅读全文
摘要:
创建脚本gpio.sh #!/bin/sh PIN=$1 VALUE=$2 if test -d /sys/class/gpio/gpio$PIN/ then echo $VALUE > /sys/class/gpio/gpio$PIN/value else echo $PIN > /sys/cla 阅读全文
摘要:
U-boot,除非在RAM中调试,一般情况下都是从flash中执行一段代码,然后将flash中储存的代码和数据搬移到ram中,然后跳转到ram中执行。当然这应该也是一般的bootloader的执行方式, 大家都差不多,但是各个bootloader的内存规划(栈,堆之类的)也 不太一样,而且u-boo 阅读全文
摘要:
Make Target Options make命令如下: 下面列出了一些最常用的目标: 编译 进入到 h2_linux_sdk/ambarella/boards/h2_everest 目录下,依次执行以下步骤,即可编译出所需image。 修改amboot配置 在执行完'make h2everest 阅读全文