<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fisheader的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fisheader</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fisheader]]></copyright><item><title><![CDATA[输入特定字符进入uboot]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/125892836</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/125892836</guid><author>fisheader</author><pubDate>Wed, 20 Jul 2022 15:13:00 +0800</pubDate><description><![CDATA[./.进入uboot]]></description><category></category></item><item><title><![CDATA[linux应用层读写idt8a34002]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/125602302</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/125602302</guid><author>fisheader</author><pubDate>Mon, 04 Jul 2022 16:06:22 +0800</pubDate><description><![CDATA[spi读写idt8a34002]]></description><category></category></item><item><title><![CDATA[pca9548及vsc9548的设备树简单挂载]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/124378017</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/124378017</guid><author>fisheader</author><pubDate>Sun, 24 Apr 2022 11:09:12 +0800</pubDate><description><![CDATA[简述
pca9548及vsc9548是iic拓展器件，主要是防止iic器件地址冲突
通过写其0x0寄存器可切换0-7路iic
设备树挂载
这里用到了vsc9548，且在第7路上挂在了eeprom器件
i2c@ff030000 {
			compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10";
			status = "okay";
			interrupt-parent = &lt;0x4&gt;;
			interrupts = &lt;0x0 0x12 0x4&g]]></description><category></category></item><item><title><![CDATA[Linux下spi读写flash]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/122343836</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/122343836</guid><author>fisheader</author><pubDate>Thu, 06 Jan 2022 19:58:42 +0800</pubDate><description><![CDATA[1.在设备树中添加flash
&amp;dspi	{
		fpga_flash@3 {
                compatible = "w25q32";
                reg = &lt;3&gt;;
                spi-max-frequency = &lt;10000000&gt;;
        };
};

2.在内核菜单添加对应驱动
│-&gt; Device Drivers
│ -&gt; Memory Technology Device (M]]></description><category></category></item><item><title><![CDATA[Linux读写eeprom]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/122056077</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/122056077</guid><author>fisheader</author><pubDate>Tue, 21 Dec 2021 10:10:52 +0800</pubDate><description><![CDATA[在设备树中挂载对应驱动
并在kernel 编译菜单中添加对应驱动
例如：
对iic1上的0x50地址的eeprom进行挂载
即可对
/sys/bus/i2c/devices/1-0050/eeprom
进行open write read操作
可对该文件进行软链接到/dev/下
#include &lt;stdio.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt;
#include &lt;fcntl.h&gt;
#include &]]></description><category></category></item><item><title><![CDATA[linux用户层通过spi读写cpld]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/121029602</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/121029602</guid><author>fisheader</author><pubDate>Fri, 29 Oct 2021 10:47:42 +0800</pubDate><description><![CDATA[cpld的通讯格式会有不同
我这使用的是32bit 需反转的
写时序：

读时序：

#include &lt;stdint.h&gt;
#include &lt;unistd.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;getopt.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;sys/ioctl.h&gt;
#inc]]></description><category></category></item><item><title><![CDATA[linux用户层下通过spi配置idt8a34002]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/121022073</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/121022073</guid><author>fisheader</author><pubDate>Thu, 28 Oct 2021 20:04:15 +0800</pubDate><description><![CDATA[#include &lt;stdint.h&gt;
#include &lt;unistd.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;getopt.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;sys/ioctl.h&gt;
#include &lt;linux/types.h&gt;
#include &lt;lin]]></description><category></category></item><item><title><![CDATA[linux用户层下通过i2c配置Si5395]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/121021890</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/121021890</guid><author>fisheader</author><pubDate>Thu, 28 Oct 2021 19:58:17 +0800</pubDate><description><![CDATA[#include&lt;stdio.h&gt;
#include&lt;linux/types.h&gt;
#include&lt;fcntl.h&gt;
#include&lt;unistd.h&gt;
#include&lt;stdlib.h&gt;
#include&lt;sys/types.h&gt;
#include&lt;sys/ioctl.h&gt;
#include&lt;errno.h&gt;
#include&lt;assert.h&gt;
#include&lt;string.h&gt]]></description><category></category></item><item><title><![CDATA[初探MYD-AM335x开发板]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/117110078</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/117110078</guid><author>fisheader</author><pubDate>Fri, 21 May 2021 10:10:09 +0800</pubDate><description><![CDATA[MYD-AM335x（NAND）
安装工具
部署开发环境
Ubuntu 16.04 64位桌面版
$ sudo apt-get install build-essential git-core libncurses5-dev u-boot-tools 
$ sudo apt-get install flex bison texinfo zip unzip zlib1g-dev gettext 
$ sudo apt-get install gperf libsdl-dev libesd0-dev 
$ su]]></description><category></category></item><item><title><![CDATA[docker入门笔记]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/117091350</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/117091350</guid><author>fisheader</author><pubDate>Thu, 20 May 2021 20:40:04 +0800</pubDate><description><![CDATA[文章目录安装DOCKER盛科编译环境安装过程：1.安装虚拟机2.安装docker一键安装手动安装3.安装镜像4.正确加载镜像后，需要把代码拷贝到docker容器内，5.进入相应目录，执行make进行编译Docker基本概念Docker三个核心概念1.镜像（Image）2.容器（Container）3.仓库（Repository）Docker基本流程旧镜像-&gt;新镜像有两种方法docker是怎么工作的docker为什么比VM快Docker常用基础指令1.docker images2.docker run3]]></description><category></category></item><item><title><![CDATA[I/O驱动框架]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/115238967</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/115238967</guid><author>fisheader</author><pubDate>Fri, 26 Mar 2021 13:10:11 +0800</pubDate><description><![CDATA[#include &lt;linux/fs.h&gt;		 //file_operations声明
#include &lt;linux/module.h&gt;    //module_init  module_exit声明
#include &lt;linux/init.h&gt;      //__init  __exit 宏定义声明
#include &lt;linux/device.h&gt;	 //class  devise声明
#include &lt;linux/uaccess.h&gt; ]]></description><category></category></item><item><title><![CDATA[Linux网络编程学习笔记]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/114701102</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/114701102</guid><author>fisheader</author><pubDate>Fri, 12 Mar 2021 17:29:36 +0800</pubDate><description><![CDATA[网络编程
进程间通讯 依赖Linux内核 存在功能缺陷：无法多机通讯       ——就要用到网络编程
地址（找到谁）


IP地址：标识设备


端口：提供访问通道 访问服务
FTP服务器的TCP端口号21
TeLnet服务器TCP端口号23
TFTP服务器UDP端口号69


数据（对话）

协议（http，tcp/udp，串口等）	   	一种数据格式

tcp协议：面向连接 （AB打电话）连接可靠，精细操作
udp协议：面向报文（AB发短信）连接不可靠，数据量大，内存响应快
字节序
字节序是指多字节]]></description><category></category></item><item><title><![CDATA[Linux线程学习笔记]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/114573925</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/114573925</guid><author>fisheader</author><pubDate>Tue, 09 Mar 2021 09:11:29 +0800</pubDate><description><![CDATA[线程
进程
进程是程序执行时的一个实例，是担当分配系统资源的基本单位。一个进程在同一时刻只能做一件事情。
进程有独立的空间
进程是线程的容器
线程
线程有自己的堆栈和局部变量，但线程没有单独的地址空间
优点：1.节俭的多任务操作方式 2.方便的通信机制
pthread库支持
基本概念：
线程
创建	pthread_create
#include &lt;pthread.h&gt;
int pthread_create(pthread_t *thread, const pthread_attr_t *attr]]></description><category></category></item><item><title><![CDATA[Linux进程间通信学习笔记]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/114573902</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/114573902</guid><author>fisheader</author><pubDate>Tue, 09 Mar 2021 09:10:59 +0800</pubDate><description><![CDATA[进程间通信
进程间通信（IPC）是指在不同进程之间传播或交换信息
IPC的方式通常有管道（包括无名管道和命名管道）、消息队列、信息量、共享存储、Socket、Streams等。其中Socket、Streams支持不同主机上的两个进程IPC
无名管道
通常指无名管道，是UNIX系统IPC最古老的形式
特点

半双工（只能同时进行一组读写），具有固定的读端和写端
只能用于具有亲缘关系的进程之间的通信（父子进程/兄弟进程）
可以看成是一种特殊的文件，对于它的读写也可以使用普通的read、write等函数。但它不是]]></description><category></category></item><item><title><![CDATA[Linux进程学习笔记]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/114573868</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/114573868</guid><author>fisheader</author><pubDate>Tue, 09 Mar 2021 09:10:18 +0800</pubDate><description><![CDATA[进程
每个进程都有一个非负整数表示的唯一ID，叫做pid
pid=0	交换进程		进程调度
pid=1	init进程		  系统初始化
getpid 获取自身的进程标识符
getppid 获取父进程的进程标识符
父进程与子进程
进程A创建了进程B
A父进程	B子进程
父子进程是相对概念
C程序的存储空间的分配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-th1YSyos-1615252193600)(C:\Users\Hasee\AppData\Roaming\Typora]]></description><category></category></item><item><title><![CDATA[Linux文件学习笔记]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/114573781</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/114573781</guid><author>fisheader</author><pubDate>Tue, 09 Mar 2021 09:08:38 +0800</pubDate><description><![CDATA[Linux操作系统提供的API
权限
可读		r		 4
可写		w		2
执行		x		 1
例：0600 可读可写（给文件所有者）
静态文件与动态文件
静态文件： 文件存在磁盘中
动态文件： open静态文件后，
​					linux内核产生一个结构体记录该文件（内存记录该文件）
read/write 都是对动态文件进行操作       close将动态文件更新到静态文件
文件描述符
Linux系统默认： 0     			1  		    	2
​						标准输入	标准输出    标准错误
op]]></description><category></category></item><item><title><![CDATA[C语言学习笔记]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/114573715</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/114573715</guid><author>fisheader</author><pubDate>Tue, 09 Mar 2021 09:07:42 +0800</pubDate><description><![CDATA[int整形 float带小数 char字符


&amp;   取地址符号（变量名所代表的变量内存地址）


*取内容符号（内存地址中的数据），只有在定义一个指针变量时，作为指针的标识符


函数在被调用时才会在内存里有空间


switch选择里 字符用单引号 ‘A’


int指针偏移占四个字节 char指针偏移占一个字节


数组的[]只有在定义一个数组时，才表示数组大小，其余是都表示下标


数组元素个数=数组总大小/一个数组类型的大小  sizeof()


形式参数中，中括号中数组的大小是无..]]></description><category></category></item><item><title><![CDATA[STM32两轮自平衡小车——PID]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/112312966</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/112312966</guid><author>fisheader</author><pubDate>Tue, 09 Mar 2021 09:04:14 +0800</pubDate><description><![CDATA[#include "control.h"

float Med_Angle = -1.4;		//»úÐµÖÐÖµ
float 
	Vertical_Kp = -348,			//Ö±Á¢»·Kp					
	Vertical_Kd = -0.9;			//Ö±Á¢»·Kd£¨´ýµ÷£©
float 
	Velocity_Kp = 0.35,			//ËÙ¶È»·Kp£¨´ýµ÷£©
	Velocity_Ki = 0.00175;			//ËÙ¶È»·Ki£¨´ýµ÷£©

float 
	Turn_Kp]]></description><category></category></item><item><title><![CDATA[STM32两轮自平衡小车（学习记录）——编码器]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/112304110</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/112304110</guid><author>fisheader</author><pubDate>Thu, 07 Jan 2021 11:12:31 +0800</pubDate><description><![CDATA[编码器正反转

正转的时候信号线A先输出信号,信号线B后输出  A相超前B相90度  证明是正转
反转的时候信号线B先输出信号,信号线A后输出 B相超前A相90度 证明是反转
STM32编码器模式

三种模式
1.仅在TL1计数(A相)
2.仅在TL2计数(B相)
3.在TL1和TL2都计数(A相和B相都计数)
计数

一个脉冲信号周期完成4次跳变。
1时刻：TI2为低电平，TI1上升沿跳变，计数器向上/向下计数；
2时刻：TI1为高电平，TI2上升沿跳变，计数器仍然向上/向下计数；
3时刻：TI2为高电平]]></description><category></category></item><item><title><![CDATA[STM32两轮自平衡小车（学习记录）——MPU6050]]></title><link>https://blog.youkuaiyun.com/fisheader/article/details/112302926</link><guid>https://blog.youkuaiyun.com/fisheader/article/details/112302926</guid><author>fisheader</author><pubDate>Thu, 07 Jan 2021 10:26:40 +0800</pubDate><description><![CDATA[摘要
MPU6050是一种非常流行的空间运动传感器芯片，可以获取器件当前的三个加速度分量和三个旋转角速度。由于其体积小巧，功能强大，精度较高，不仅被广泛应用于工业，同时也是航模爱好者的神器，被安装在各类飞行器上驰骋蓝天。
MPU6050的数据是有较大噪音的，若不进行滤波会对整个控制系统的精准确带来严重影响。
MPU6050芯片内自带了一个数据处理子模块DMP，已经内置了滤波算法，在许多应用中使用DMP输出的数据已经能够很好的满足要求。
移植过程
移植需要官方代码
dmpKey.h
dmpmao.h
inv.]]></description><category></category></item></channel></rss>