自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (4)
  • 收藏
  • 关注

原创 在linux用户空间修改u-boot环境变量

工具所在位置uboot-imx/tools/env 里面有README文件首先编译工具make CROSS_COMPILE=$CROSS_COMPILE envtools直接编译出错修改uboot顶层Makefile# Always use GNU ldifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),)LD = $(CROSS_COMPILE)ld.bfdelseLD = $(CROSS_COMPIL

2021-10-25 14:44:08 1305

转载 LVDS,LCD调试总结

原文链接:https://blog.csdn.net/a617996505/article/details/82386952/1.LVDS接口分类与数据格式单路6it LVDS这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此,也称18位或18bit LVDS接口。此,也称18位或18bit LVDS接口。双路6bit LVDS这种接口电路中,采用双路方式传输,每个基色信号采用6位数据,其中奇路数据为18位,偶路数据为18位,共36位RGB数据..

2021-05-06 11:06:15 1455

原创 使用android ndk编译busybox

busybox下载地址我使用的版本是v1.20.1android ndk下载安装下载地址我使用的是android-ndk-r16b-linux-x86_64.zip安装工具链解压压缩包后,使用以下命令安装/home/cyk/OTA/android-ndk-r16b/build/tools/make_standalone_toolchain.py \ --arch arm \ --api 16 \ --install-dir=/home/c..

2021-03-01 14:29:55 1688

原创 imx8qxp uuu 下载脚本example_kernel_emmc.uuu注释

脚本下载地址可参考我写的另一篇博文https://blog.csdn.net/qq_17270067/article/details/109067027软件版本代表了uuu能解析这个脚本的最小版本uuu指令的格式为PROTOCOL: CMDuuu_version 1.2.39# Please Replace below items with actually file names# @_flash.bin | boot loader# @_Image ...

2021-02-26 17:16:45 2481

翻译 systemd和控制台运行应用的不同之处

自己在设置应用自启动时,一直被这个问题所困扰,在英文站上看到了篇不错的文章,就想着翻译一下。原文在此https://unix.stackexchange.com/questions/339638/difference-between-systemd-and-terminal-starting-program/339645#339645...

2021-01-22 10:55:14 554

原创 linux 查看io编号以及是否设置成功

网上有很多相关的文章介绍了如何使用sysfs方式控制io,这里也不赘述了,本章主要介绍如何查看sysfs设置io是否成功以及如何得到sysfs方式的io编号。

2020-12-25 10:20:18 508 1

原创 Yocto 往rootfs中增加新的软件包

我参考了这位大佬写的文章https://www.kancloud.cn/digest/yocto/138634首先找到自己编译目标所用的bb文件cyk@cyk-virtual-machine:~/imx-yocto-bsp/sources$ find -name *imx-image-multimedia*.bb*./meta-imx/meta-sdk/recipes-fsl/images/imx-image-multimedia.bb我找到的文件是imx-image-multim.

2020-12-17 15:40:59 3375

原创 Yocto 编译完成后的文件使用以及uuu烧录方法

yocto在编译完成后会生成很多文件,位置在下面介绍一些常用的文件使用<work dir>是imx-yocto-bsp<distro name>是fsl-imx-xwayland<machine name>是imx8qxpmek<build dir>是build-xwayland上面列举的文件夹都是我编译时使用的文件夹,不同的版本会有不同。kernel源码~/imx-yocto-bsp/build-xw...

2020-12-17 09:50:53 5851

原创 iio驱动与sysfs子系统的调用关系

前几天在看bmp280的驱动,也就接触到了iio驱动,但是网上的很多文章都对iio驱动如何创建sysfs分析的很少,正好当时调驱动时输出的值有点问题,于是就想分析分析创建过程与调用的函数。内核版本:5.4.24-dirty平台:imx8qxp使用的器件为bmp280 源码位于<kernel>/drivers/iio/pressure/bmp280-i2c.c整个匹配过程从probe开始static int bmp280_i2c_probe(struct...

2020-11-23 17:12:18 1190

原创 imx8mq 修改cpu温度限制

当cpu温度传感器大于指定温度时,会出现一直在检测温度的情况有需要时可以修改此温度。涉及到的修改包括u-boot和内核 u-boot drivers/thermal/nxp_tmu.cint nxp_tmu_get_temp(struct udevice *dev, int *temp){ struct nxp_tmu_plat *pdata = dev_get_platdata(dev); int cpu_tmp = 0; int ret; ret = read_.

2020-09-07 10:06:41 1640 2

原创 Yocto问题处理小结

最近在搞imx-yocto-L5.4.24_2.1.0的编译,也是第一次接触这个东西真的是遇到各种问题,也做个小结。参考文档去官网下载 具体网址也找不到了。按照文档使用的是Ubuntu18.04,硬盘空间200G,内存空间3G。文档中建议的空间是120G,实际上在编译过程中会出现硬盘空间不足的情况。编译时最好使用固态硬盘,机械硬盘的编译速度简直感人。增加并行任务数量,加快下载速度打开编译目录下的local.conf文件 (我使用的文件夹是imx-yocto-bsp )vi..

2020-08-26 11:40:21 3722

原创 imx6q 音频芯片驱动开发--相关设备树以及代码中的对应设置

首先就不介绍asoc框架了,网上好的资料很多,推荐DroidPhone大神的,写的很全,知识面基本都介绍到了,不过由于写的比较早,没有使用设备树,最近也正好在调相关驱动,写点东西记录一下。https://blog.csdn.net/droidphone/category_1118446.htmlmpu:imx6q linux-kernel:4.1.151、machine驱动使用的是设备树中的sound节点sound { compatible = "fsl,imx-au..

2020-07-31 16:03:47 2658 1

原创 linux 内核链表遍历宏 list_for_each_entry

#define list_for_each_entry(pos, head, member) \ for (pos = list_entry((head)->next, typeof(*pos), member); \ &pos->member != (head); \ pos = list_entry(pos->member.next, typeof(*pos), member))#define list_entry(ptr, type, .

2020-07-13 14:09:12 1227 1

原创 设备树中的i2c设备以及内核对i2c节点的处理过程

dtb文件中的i2c节点&i2c2 { clock-frequency = <100000>; //时钟频率 pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c2>; //i2c使用的引脚 status = "okay"; //默认状态为使能状态 codec: wm8904@1a { compatible = "wlf,wm8904"; //

2020-07-10 11:11:38 3855

原创 设备树中的通用中断控制器GIC

GIC中断类型有3种:SGI(Software-generatedinterrupt)、PPI(Privateperipheralinterrupt)、SPI(Sharedperipheralinterrupt)。SGI:SGI为软件可以触发的中断,统一编号为0~15,用于各个core之间的通信。PPI: PPI为每个core的私有外设中断,统一编号为16-31。例如每个CPU的local timer即Arch Timer产生的中断就是通过PPI发送给CPU...

2020-07-10 09:54:59 1137

转载 C语言 !!的含义

原地址https://blog.csdn.net/chenmoshashou2/article/details/80757300C语言中偶尔会遇到 !!(cond),特别是在宏定义当中一个感叹号!我们知道是取非!(非零)=0!(零)=1两个感叹号由此推导可以知道:!!(非零)=1!!(零)=0...

2020-06-29 16:39:57 4602

原创 设备树中的spi设备以及内核对spi节点的处理流程

dts文件中的spi节点

2020-06-28 11:11:42 3396 1

原创 insmod出现loading out-of-tree module taints kernel

其实这句话已经表达了错误的原因了:加载树外模块污染内核,意思是我们加载的驱动中需要的设备树节点在当前设备树文件中未找到。

2020-06-28 09:23:09 8091 1

原创 c语言 struct结构体大小计算方法

struct结构体大小的计算方法1)第一个成员处在偏移地址0的地方2)#include <stdio.h>#pragma pack(4)struct Test1{ //对齐参数 偏移地址 大小 char c1;//1 0 1 short s; //2 2 2 char c2;//1 4 1 int i; //4

2020-06-03 15:31:11 2606

原创 c 指针阅读技巧-右左法则

右左法则:1)从最里层圆括号中未定义的标识符看起2)首先往右看,再往左看3)遇到圆括号或方括号时可以确定部分类型,并调转方向4)重复2,3步骤直到阅读结束下面是一些例子 int (*p1)(int*, int (*f)(int*)); int (*p2[5])(int*); int (*(*p3)[5])(int*); int*(*(*p4)(int*))(int*); int (*(*p5)(int*))[5]

2020-05-16 20:56:55 262

原创 C 二维数组的动态申请

二维数组实际上可以看做是每个数组元素的数据类型为一维数组的数组。同时二维数组的内存空间中存储也是连续的。如下图所示:所以我们在进行动态申请需要注意的就是,保留二维数组数据存储区域是连续的特性。代码如下:#include <stdio.h>#include <malloc.h>int** malloc2d(int row, int col){ int** ret = NULL; if((row > 0)&&(c

2020-05-09 18:44:19 733

原创 c++ static_cast类型转换

1、用于基本类型的转换,不能用于基本类型指针间的转换2、用于有继承关系类对象之间的转换和类指针之间的转换3、用于使用explict修饰的构造函数

2020-05-05 10:20:19 1587

原创 c语言 数组与指针的异同

数组和指针的区别指针 数组 保存数据的地址 保存数据 间接访问数据,首先取得指针的内容,把它作为地址,然后从这个地址提取数据。 如果指针有一个下标[i],就把指针的内容加上i作为地址,从中提取数据。 直接访问数据,a[i]只是简单的以a+i为地址取得数据。 通常用于动态数据结构 通常用于存储固定数目且数据类型相同的元素。 相关的函...

2020-05-04 20:44:18 202

原创 c/c++ 不同类型数据运算时的隐式转换规则

在c/c++中不同类型数据运算时会隐式的转化到更大数据类型进行运算,所以有时运行结果很令人费解。#include <iostream>#include <string>using namespace std;int main(){ short s = 'a'; unsigned int ui = 1000; int i = -2000; dou...

2020-05-04 15:04:51 549

原创 C++ 局部对象作为返回值的情况

代码如下:#include <iostream>using namespace std;class Test{ int mValue;public: Test(int i) { mValue = i; cout << "Test(int i) i = " << i << endl; } Test(const Tes...

2020-04-30 13:39:44 908 1

原创 C++ 逗号操作符的含义以及重载

逗号操作符(,)在c\c++中的原生语义:1)逗号表达式用于将多个子表达式连接为一个表达式2)逗号表达式的值为最后一个子表达式的值3)逗号表达式的前N-1个子表达式可以没有返回值4)逗号表达式按照从左到右的顺序计算每个子表达式的值例子:#include <iostream>#include <string>using namespace st...

2020-04-28 15:16:45 654

原创 C++面试题 以指定字符为界翻转两边的字符串

题目:#include <iostream>#include <string>#include<algorithm>using namespace std;string reverse(const string& s, const char c){ string ret = ""; unsigned int Foundi...

2020-04-24 15:41:20 189

原创 设备树中pinctrl的简单使用

pinctrl介绍文档:内核目录\Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt首先介绍几个概念:Bank: 以引脚名为依据, 这些引脚分为若干组, 每组称为一个Bank比如s3c2440里有GPA、GPB、GPC等Bank。每个Bank中有若干个引脚, 比如GPA0,GPA1, ..., GPC0, G...

2020-03-28 19:20:14 2181

原创 在设备树中时钟的简单使用

内核中关于时钟的描述文档:Documentation/devicetree/bindings/clock/clock-bindings.txtDocumentation/devicetree/bindings/clock/samsung,s3c2410-clock.txt//晶振节点xti: xti_clock { compatible = "fixed-clock";...

2020-03-27 22:11:24 3676

原创 中断在设备树中的使用

想使用中断,节点中至少有有2个属性:interrupts // 表示要使用哪一个中断, 中断的触发类型等等。interrupt-parent // 这个中断要接到哪一个设备去? 即父中断控制器是谁

2020-03-25 09:47:55 2776

原创 linux对中断向量的处理

a.异常向量入口:(linux-4.19-rc3\arch\arm\kernel\entry-armv.S) .section .vectors, "ax", %progbits.L__vectors_start: W(b) vector_rst W(b) vector_und W(ldr) pc, .L__vectors_start + 0...

2020-03-20 19:40:43 654

原创 驱动release函数的调用时机

1)应用程序自己调用close2)应用程序退出时内核会清理应用程序打开的东西会调用到close

2020-03-17 19:45:10 1069

原创 关于lds文件中段名在c文件中的使用

//链接脚本SECTIONS{ . = 0x33f80000; /*代码段起始地址*/ .text : { start.o (.text) *(.text) } /*代码段*/ . = ALIGN(4); /*下一段的起始地址向4取整...

2020-03-01 15:27:32 268

原创 设备树语法简介

(1) 语法:Devicetree node格式:[label:] node-name[@unit-address] {[properties definitions](属性定义)[child nodes](子节点)};label: 用于其他节点引用该节点node-name:节点名unit-address:由于同一级别下的子节点名称不能相同,可以使用unit-...

2020-02-27 22:49:55 480

原创 内核获得u-boot传递的TAG的方式

uboot在完成所有工作之后使用theKernel()启动内核theKernel (0, machid, bd->bi_boot_params); 传递三个参数0、machid、TAG的首地址,分别存入r0,r1,r2,之后启动内核。内核中获取TAG首地址则是在arch/arm/kernel/setup.c文件的setup_arch()函数中(内核版本:linu...

2020-02-21 21:06:36 306

原创 驱动程序module_init()在编译成模块或编译进内核时的区别

内核版本linux-2.6.22.6在内核目录include/linux/init.h中会解析,是否定义了MODULE宏来区分编译进内核还是编译成模块。编译进内核的宏展开过程module_init(x)->__initcall(x);->device_initcall(fn)->__define_initcall("6s",fn,6s) #define...

2020-02-15 20:26:35 743

转载 关于MPLL和UPLL的学习

S3C2440有两个PLL(phaselockedloop)一个是MPLL,一个是UPLL。MPLL用于CPU及其他外围器件,UPLL用于USB。用于产生FCLK,HCLK,PCLK三种频率,这三种频率分别有不同的用途:FCLK是CPU提供的时钟信号。HCLK是为AHB总线提供的时钟信号,AdvancedHigh-performanceBus,主要用于高速外设,比如内存控制器...

2020-01-21 13:11:44 1210

原创 uboot移植问题:u-boot 2012-07启动内核后停在Uncompressing Linux... done, booting the kerne

针对于这个问题,网上有很多原因:U-BOOT传给内核的id出错,仔细检查了我最后找到的原因是时钟分频设置错误,直接使用了默认宏。(设置错了的情况下u-boot操作外设竟然也能成功!)# if defined(CONFIG_S3C2400)# define pWTCON 0x15300000# define INTMSK 0x14400008 /* Interrupt-Con...

2020-01-18 22:55:23 368 1

原创 uboot移植问题:u-boot 2012-07所有命令行指令都无法识别

针对于这个问题 我找到的错误是重定位后的栈地址设置出错栈地址被我设置成了.word型,2字节数据设置的地址肯定不在内存中,没办法调用函数,所以出错。.globl base_spbase_sp: .word 0 改为.long型之后就可以使用了.globl base_spbase_sp: .long 0 ...

2020-01-05 21:25:29 538

原创 更换gcc编译器的方法

首先从网上下载需要gcc版本,我下载的是arm-linux-gcc-4.3.2.tar.bz2//解压文件到根目录 新的工具链位置会处于/usr/local/arm/4.3.2/bin中sudo tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C ///查看当前环境变量echo $PATH //得到的环境变量如下/home/book/bin:/h...

2019-12-28 20:10:02 1214

tas2505 imx6q linux4.1.15版本驱动

驱动所需设备树可以查看https://blog.csdn.net/qq_17270067/article/details/107713525

2020-12-18

天气app(源码)

基于《第一行代码第二版》的天气app的扩展开发,功能在原书的基础上实现了:1、主界面可以左右滑动切换,看到所有所选城市的天气信息。2、城市管理功能:点击城市,在主界面显示所点击城市的天气信息,长按进行城市的删除。3、搜索城市功能:输入城市名的中文或者拼音可以得到一个或多个城市,点击后可以在主界面生成新页显示天气数据。4、设置界面:可以选择是否自动更新,以及输入自动更新时间。5、首次进入app时,可以下拉定位,显示所在地天气。有数据时下拉可以刷新所有城市的天气信息。

2017-10-05

基于《第一行代码第二版》的天气app的扩展开发(源码)

因为是基于《第一行代码第二版》的天气app的扩展开发,功能在原书的基础上实现了:1、主界面可以左右滑动切换,看到所有所选城市的天气信息。2、城市管理功能:点击城市,在主界面显示所点击城市的天气信息,长按进行城市的删除。3、搜索城市功能:输入城市名的中文或者拼音可以得到一个或多个城市,点击后可以在主界面生成新页显示天气数据。4、设置界面:可以选择是否自动更新,以及输入自动更新时间。5、首次进入app时,可以下拉定位,显示所在地天气。有数据时下拉可以刷新所有城市的天气信息。

2017-10-05

第二行代码天气app扩展开发源码

因为是基于《第一行代码第二版》的天气app的扩展开发,在原书的基础上实现了:1、主界面可以左右滑动切换,看到所有所选城市的天气信息。2、城市管理功能:点击城市,在主界面显示所点击城市的天气信息,长按进行城市的删除。3、搜索城市功能:输入城市名的中文或者拼音可以得到一个或多个城市,点击后可以在主界面生成新页显示天气数据。4、设置界面:可以选择是否自动更新,以及输入自动更新时间。5、首次进入app时,可以下拉定位,显示所在地天气。有数据时下拉可以刷新所有城市的天气信息。

2017-10-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除