<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lingyi_cai的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lingyi_cai</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lingyi_cai]]></copyright><item><title><![CDATA[在全志T7方案上常用调试指令及说明]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/121741737</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/121741737</guid><author>lingyi_cai</author><pubDate>Mon, 06 Dec 2021 10:33:49 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/rikeyone/article/list/6

https://blog.youkuaiyun.com/lbaihao/article/list/6

https://blog.youkuaiyun.com/li_wen01/article/details/89574756

1. 读取CPU温度：
cat /sys/class/thermal/thermal_zone0/temp

2. 音频：
1) echo 0 &gt; /sys/class/gpio_sw/PM13/data.]]></description><category></category></item><item><title><![CDATA[基于RV1126方案上调试GPIO口]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/121741176</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/121741176</guid><author>lingyi_cai</author><pubDate>Mon, 06 Dec 2021 10:17:47 +0800</pubDate><description><![CDATA[1. DTS路径为rv1126\linux-4.19\arch\arm\boot\dts

在rv1126.dtsi上添加以下部分:


	gpio_para: gpio_para {
		compatible = "rk,gpio-para";
		status = "disabled";
		sata-en-gpio = &lt;&amp;gpio0 RK_PA4 GPIO_ACTIVE_HIGH&gt;;
		lphout-cs-gpio = &lt;&amp;gpio0 RK_PA5 GPIO_AC]]></description><category></category></item><item><title><![CDATA[在全志T7平台上测试TTY功能]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/121740926</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/121740926</guid><author>lingyi_cai</author><pubDate>Mon, 06 Dec 2021 10:07:34 +0800</pubDate><description><![CDATA[#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;
#include&lt;string.h&gt;
#include&lt;sys/types.h&gt;
#include&lt;sys/stat.h&gt;
#include&lt;fcntl.h&gt;
#include&lt;unistd.h&gt;
#include&lt;termios.h&gt;
#include&lt;string.h&gt;

#define TTY_PATH	"/dev/tt.]]></description><category></category></item><item><title><![CDATA[全志T7平台上移植WiFi RTL8188EUS]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/121482881</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/121482881</guid><author>lingyi_cai</author><pubDate>Mon, 22 Nov 2021 23:00:03 +0800</pubDate><description><![CDATA[在T7平台上移植wifi驱动模块RTL8818EUS，工作模式为AP模式，即RTL8818EUS模块当作WIFI热点来使用，便于其他设备连接进去，实现基于无线网络通信的功能.]]></description><category></category></item><item><title><![CDATA[基于V4L2采集摄像头数据]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/108851628</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/108851628</guid><author>lingyi_cai</author><pubDate>Mon, 28 Sep 2020 16:13:24 +0800</pubDate><description><![CDATA[基于Linux Kernel V4L2框架验证采集摄像头数据，捕获到的yuv数据在7yuv.exe进行查看，从而验证摄像头驱动到应用层的数据链路完整性。源码如下所示：

#include &lt;unistd.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;sys/ioctl.h&gt;
#include &lt;linux/types.h&gt;
#in]]></description><category></category></item><item><title><![CDATA[TI-C6657开发板烧录步骤]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/100508823</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/100508823</guid><author>lingyi_cai</author><pubDate>Tue, 03 Sep 2019 09:29:54 +0800</pubDate><description><![CDATA[本文描述如何借助工具包mcsdk通过仿真器和CCS将TI C6657开发板烧录镜像，并从不同的介质启动运行代码。

工具包路径：C:\ti\mcsdk_2_01_02_06

CCS版本：CCSv7.4.0

步骤1：将IBL烧写到EEPROM

1）拷贝文件i2crom_0x51_c6657_le.bin、evmc6657l.gel

源路径：C:\ti\mcsdk_2_01_02_06\too...]]></description><category></category></item><item><title><![CDATA[可变参数函数]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/97275528</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/97275528</guid><author>lingyi_cai</author><pubDate>Thu, 25 Jul 2019 17:31:24 +0800</pubDate><description><![CDATA[C语言的函数中参数一般是固定的，但是有些时候我们需要让函数的参数是可变的，为了满足这个需求，C语言提供了库函数在&lt;stdarg.h&gt;中来满足要求。

可变参数函数的使用要求比较严谨，必须按照下面的方法进行使用：

1）在函数原型中使用省略号，如：double sum(int lim, ...)

2）在函数定义中创建一个 va_list类型的变量，如：va_list ap.

3）用宏...]]></description><category></category></item><item><title><![CDATA[输入型参数与输出型参数]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/90484531</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/90484531</guid><author>lingyi_cai</author><pubDate>Thu, 23 May 2019 17:32:21 +0800</pubDate><description><![CDATA[1、函数为什么需要形参与返回值

a. 函数名是一个符号，表示整个函数代码段的首地址，实质是一个指针常量，所以在程序中使用到函数名时都是用来做地址的，用来调用这个函数的。

b. 函数体是函数的关键，是由一对{}括起来的，包含很多句代码，函数体就是函数实际做的工作。

c. 形参列表和返回值。形参是函数的输入部分，返回值是函数的输出部分。对函数最好的理解就是把函数看成是一个加工机器(程序其实...]]></description><category></category></item><item><title><![CDATA[const关键字与指针]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/90411285</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/90411285</guid><author>lingyi_cai</author><pubDate>Tue, 21 May 2019 17:32:44 +0800</pubDate><description><![CDATA[1、const修饰指针的四种形式
a. const是关键字，在C语言中原来修饰变量，表示这个变量是常量。
 const int iNum = 10; 和 int const iNum = 10;的效果是一样的。

b. const修饰指针有4种形式。区分清楚这4种即可全部理解const和指针。1）const int *p
 p是一个指针，指向一个int型数据，p所指向的是个常量。
 ...]]></description><category></category></item><item><title><![CDATA[位操作]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/90410990</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/90410990</guid><author>lingyi_cai</author><pubDate>Tue, 21 May 2019 17:23:01 +0800</pubDate><description><![CDATA[1、位与(&amp;)、位或(|)、位异或(^)总结
a、位与：二进制数(0/1)，与1位与无变化，与0位与变成0
b、位或：二进制数(0/1)，与1位或变成1，与0位或无变化
c、位异或：二进制数(0/1)，与1位异或是取反，与0位异或无变化(相同为0，不同为1)

2、左移位 &lt;&lt; 与右移位 &gt;&gt;
C语言的移位要取决于数据类型
对于无符号数，左移时右侧补0(相当于逻辑...]]></description><category></category></item><item><title><![CDATA[内存理解]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/90410830</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/90410830</guid><author>lingyi_cai</author><pubDate>Tue, 21 May 2019 17:17:51 +0800</pubDate><description><![CDATA[1、什么是内存
硬件角度：内存实际上是电脑的一个配件(内存条)。
     根据不同的硬件实现原理还可以把内存分成SDRAM(静态)和DRAM(动态
   DRAM又有好多代，譬如最早的SDRAM,后来的DDR1、DDR2....LPDDR
逻辑角度: 内存是这样的一种东西，它可以随机访问
     随机访问的意思是只要给定一个地址，就可以访问内存地址，也可以读写...]]></description><category></category></item><item><title><![CDATA[offsetof与container_of宏举例]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/90240993</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/90240993</guid><author>lingyi_cai</author><pubDate>Wed, 15 May 2019 18:03:46 +0800</pubDate><description><![CDATA[一、在Linux Kernel中关于offsetof与container_of宏的定义为：



二、offsetof宏介绍

A. offsetof宏的作用是：用宏来计算结构体中某个元素相对结构体首地址的偏移量(其实本质是通过编译器来帮我们计算)

B. offsetof宏的原理：我们虚拟一个type类型结构体变量，然后用type.member的方式来访问那个member元素，继而得到
 ...]]></description><category></category></item><item><title><![CDATA[DSP C6657恢复出厂设置及快速烧录多核镜像]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/90229040</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/90229040</guid><author>lingyi_cai</author><pubDate>Wed, 15 May 2019 09:07:04 +0800</pubDate><description><![CDATA[本文描述如何通过仿真器和CCS将开发板恢复到出厂设置，并如何进行快速烧录多核镜像到FLASH中。

一、恢复出厂设置

步骤1：用仿真器连接开发板DSP JTAG接口和PC终端，将开发板的拨码开关拨到NO BOOT模式，这个档位是DEBUG调试模式，然后将开发板上电。

步骤2：确认IDE CCS安装路径

确认修改E:\TMS320C665x\Demo\Factory Reset\Flash.b...]]></description><category></category></item><item><title><![CDATA[烧写DSP C6657多核镜像到NAND FLASH]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/90169663</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/90169663</guid><author>lingyi_cai</author><pubDate>Mon, 13 May 2019 11:35:37 +0800</pubDate><description><![CDATA[本文描述如何烧写DSP C6657多核镜像到NAND FLASH。

步骤1：生成单个可烧写文件

1）在综合例程Board_C665x基础上进行了修改源码，编译得到Board_C665x.out

2）对Board_C665x.out进行strip处理，去掉未初始化段和打印信息，这些不影响程序的运行结果，分别得到Board_C665x_Core0.out、Board_C665x_Core1.ou...]]></description><category></category></item><item><title><![CDATA[编写Linux设备驱动的先决知识]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/89489792</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/89489792</guid><author>lingyi_cai</author><pubDate>Wed, 24 Apr 2019 14:12:33 +0800</pubDate><description><![CDATA[本文从描述驱动的概念、Linux内核整体架构、内核模块化设计、Linux驱动设备分类、驱动程序安全性要求和如何学习驱动几个方面来阐述编写Linux设备驱动的先决知识。

1、什么是驱动？

软件层面的驱动广义上就是指：这一段代码操作了硬件去动，所以这一段代码就叫硬件的驱动程序。

狭义上驱动程序就是专指操作系统中用来操控硬件的逻辑方法部分代码。

2、Linux内核整体架构



2.1 分层思...]]></description><category></category></item><item><title><![CDATA[计算DSP程序运行时间]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/88909137</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/88909137</guid><author>lingyi_cai</author><pubDate>Sat, 30 Mar 2019 11:14:20 +0800</pubDate><description><![CDATA[测试方法1：

 // 计数变量
 long long StartTime = 0;
 long long EndTime = 0;

 // 初始化计数时钟（开始后就不能停止）
 TSCH = 0;
 TSCL = 0;

 // 开始计数
 StartTime = _itoll(TSCH, TSCL);

/*
 被测试运行程序
*/

...]]></description><category></category></item><item><title><![CDATA[imx6q平台上移植mt7601]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/88868015</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/88868015</guid><author>lingyi_cai</author><pubDate>Thu, 28 Mar 2019 17:22:14 +0800</pubDate><description><![CDATA[本文描述如何将MT7601 WiFi模块移植到IMX6Q开发板上，分析移植过程中碰到的问题，分析错误原因，提供解决办法。

一、MT7601实物图



二、验证开发板和USB MT7601硬件是否正常

步骤1：将MT7601插入到IMX6Q开发板上

步骤2：在串口终端敲入命令lsusb

如下图所示，表示硬件上正常。



三、开发环境及准备资料

开发环境：ubuntu 14.04

准备...]]></description><category></category></item><item><title><![CDATA[linux源码目录结构介绍]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/82849578</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/82849578</guid><author>lingyi_cai</author><pubDate>Wed, 26 Sep 2018 11:09:30 +0800</pubDate><description><![CDATA[Linux内核源代码包括三个主要部分：

1. 内核核心代码，包括各个子系统和子模块，如：Process Scheduler 进程管理、Memory Manager 内存管理、VFS 虚拟文件系统、Network 网络子系统、IPC 进程通信。以及其它的支撑子系统，例如电源管理、Linux初始化等。

2. 其它非核心代码，例如库文件（因为Linux内核是一个自包含的内核，即内核不依赖其它的任何软...]]></description><category></category></item><item><title><![CDATA[printk调试之设置日志打印级别]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/82839327</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/82839327</guid><author>lingyi_cai</author><pubDate>Tue, 25 Sep 2018 14:53:06 +0800</pubDate><description><![CDATA[日志打印注意事项：

1. 日志输出是有代价的，特别是在嵌入式系统，或者对执行时序要求较高的应用场景。因此

          a) 只有在需要的地方加入，不能滥用

          b) 一定要有一个全局的开关，在不需要或者产品发布的时候，关闭输出，或者降低日志输出的频率

 2. 日志输出需要有优先级控制，例如：发生错误时的日志优先级最高，一般都要输出；一些重要的提示，优先级中等，可能会...]]></description><category></category></item><item><title><![CDATA[uboot初体验]]></title><link>https://blog.youkuaiyun.com/lingyi_cai/article/details/78995612</link><guid>https://blog.youkuaiyun.com/lingyi_cai/article/details/78995612</guid><author>lingyi_cai</author><pubDate>Sun, 07 Jan 2018 16:37:42 +0800</pubDate><description><![CDATA[以s5pv210移植好的boot代码分析为例，版本号为：1.3.41、获取uboot的三种途径a. uboot官方，ftp://ftp.denx.de/pub/u-boot/b. SoC官方，譬如：三星公司c. 具体开发板官方，譬如:深圳九鼎公司Note: 源头的源代码是uboot官网下载的。SoC厂商(譬如三星)在推出一款SoC后，厂商的工程师会去uboot官网下载一个uboot，根据自己的So...]]></description><category></category></item></channel></rss>