嵌入式开发
文章平均质量分 65
leochen_career
没有天赋的的软件工程师
展开
-
UART(SPI或I2C)如何接收变长数据帧(接收数据时不清楚需要接收的数据长度)
在阅读NXP、ST等厂家提供的MCU的SDK代码时,经常会发现在提供的一些驱动库函数中,uart、i2c、spi等驱动的接收函数API,都需要传入一个参数,这个参数就是期望接收的数据长度(expected bytes),当sdk底层接收的数据长度达到expected bytes时,触发用户注册的回调函数,通知用户数据接收完毕.sdk中的这种设计,在收发都是定长数据的使用场景中,非常方便使用。比如...原创 2020-02-18 11:07:48 · 1958 阅读 · 0 评论 -
uboot_v2016 版本中fw_printenv的编译问题
最近研究fail-safe的嵌入式软件升级方案,需要在linux环境下修改uboot中的环境变量,所以需要交叉编译uboot中的/tool/env代码,编译过程中遇到了很多问题,最终完美解决了。我的交叉编译工具用的是freescal的imx6平台提供的arm-poky-linux-gnueabi-gcc套件,该套件是由yocto平台生成的。1.按照网上的教程,设置完交叉编译的环境变量后,执行m...原创 2018-07-13 10:30:20 · 2324 阅读 · 0 评论 -
imx6设备树(dts)pinctrl解析
http://blog.csdn.net/michaelcao1980/article/details/50730421最近在移植linux,用到kernel版本为3.14.28,在高版本的内核源码中用到了设备树(device-tree),设备树中用到pinctrl的配置,记录一下。1、普通设置在配置串口时,pinctrl的配置信息如下所示:[cpp转载 2017-12-27 17:06:03 · 895 阅读 · 0 评论 -
UBOOT通用菜单menu的实现
1. 概述在uboot中经常需要开发一个菜单,用来进行一些选项类的操作,如下图所示网上有很多介绍菜单的开发方法,但很多都是自己开发,没有统一的开发框架。最近研究uboot代码时发现,其实uboot(版本为2016)代码中有一个菜单框架,以及使用这个框架的一个具体例子,可以根据自己的需要进行适当的修改,用起来非常方便。2.具体实现菜单框架代码位于/common/menu.c文...原创 2017-12-26 11:28:35 · 2453 阅读 · 2 评论 -
UBOOT中环境变量的类别
调试UBOOT时,想增加一个环境变量ipaddr,这个环境变量是uboot中默认支持的一个环境变量,当增加一个内容如下#define CONFIG_IPADDR “192.168.1.2”"ipaddr=" CONFIG_IPADDR "\0" \UBOOT启动后,解析环境变量时,提示如下错误信息## Error: flags type check failure for "ipa原创 2017-12-06 17:02:39 · 1221 阅读 · 0 评论 -
uboot脚本(类似于shell)
uboot启动时,通常可以中断uboot启动,进入uboot命令行界面。进入后可以设置环境变量,使用一些命令行。除此之外,还可以使用命令行脚本。原创 2017-11-27 17:37:52 · 5526 阅读 · 0 评论 -
shell启动程序的四种方式
linux下shell启动程序的四中方式原创 2017-11-22 15:49:29 · 26214 阅读 · 4 评论 -
cdev、misc以及device三者之间的联系和区别
1.从/dev目录说起从事Linux嵌入式驱动开发的人,都很熟悉下面的一些基础知识比如对于一个char类型的设备,我想对其进行read wirte 和ioctl操作,那么我们通常会在内核驱动中实现一个file_operations结构体,然后分配主次设备号,调用cdev_add函数进行注册。从/proc/devices下面找到注册的设备的主次设备号,在用mknod /dev/char_de...原创 2017-11-15 15:03:02 · 7430 阅读 · 10 评论 -
yocot目录结构说明
以下结构为yocto工程的一些通用的结构。实际工程中,各个厂商可能根据自己的需要进行剪裁,但是整体的结构以及每个目录存放的内容大体上是一致的。顶层文件结构bitbake bitbake工具目录。bitbake,是一metedate解释器,读取metedate并执行定义的task。执行bitbake命令时,其实执行的就是bitbake/bin/下面的文件。bui原创 2017-11-20 14:09:03 · 2148 阅读 · 0 评论 -
DTB和OF
在内核的/include/linux文件目录下,有一个of.h的头文件,里面是对device node文件的一系列操作。 device node是内核通过分析dtb文件生成的节点信息,那么为什么所有的函数都是以of开头呢?of的具体含义是什么?OF,是Open Firmware的缩写。OF本意是计算机固件系统的一种标准规范,OF允许系统直接从PCI卡加载独立于平台的驱动程序,提高兼容性。OF的目的原创 2017-10-30 10:41:07 · 323 阅读 · 0 评论 -
raw nand flash 与emmc nand flash的区别
1.通常情况下,我们所说的nand flash特指raw nand flash. flash本身没有坏块管理,需要软件进行坏换管理,也叫作 非管理的nand( non-managed NAND). emmc nand flash 芯片内部集成了坏块管理,软件不需要关注,也叫作可管理的nand(managed NAND) 2 raw nand 统一性做的不够好,各个厂家都有自己的特性,给使用者带来原创 2017-09-06 11:54:57 · 4506 阅读 · 0 评论 -
嵌入式linux 内核模块调试ko的 insmod问题
将自己编译的drv_fpga.ko 进行insmod后,内核中的init函数中的打印信息没有打印出来。lsmod显示已经安装成功,但是在/proc/misc/目录下(设备注册到了该目录下)没有找到对应的设备,objdump -sj.modinfo drv_fpga 显示如下信息,感觉ko文件是有问题的。通过以下方法逐一排查1.肯定是没有调到module_init中自己注册的原创 2017-04-01 10:54:24 · 2668 阅读 · 0 评论 -
Android的pmem分析
pmem是android为DSP vpu gpu等设备提供的一种内存分配机制,我们都知道vpu gpu这一类设备需要大块的连续物理内存以便进行硬件解码,硬件显示加速。PMEM就像一个小型的buddy内存管理系统,独立于linux kernel内存管理模块管理,不会受到内存管理中的外碎片的影响,同时还可以灵活的提供额外功能。当然在系统运行一段时间后,PMEM也同样面临着外碎片问题,因此PMEM内转载 2014-10-13 15:22:58 · 951 阅读 · 0 评论