<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Enosji的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Enosji</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Enosji]]></copyright><item><title><![CDATA[用户定义udev规则重命名网卡]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/134017685</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/134017685</guid><author>Enosji</author><pubDate>Tue, 24 Oct 2023 17:35:34 +0800</pubDate><description><![CDATA[udev规则重命名网口]]></description><category></category></item><item><title><![CDATA[linux申请预留内存]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/132622055</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/132622055</guid><author>Enosji</author><pubDate>Fri, 01 Sep 2023 13:23:44 +0800</pubDate><description><![CDATA[通过改代码或者修改grubenv文件进行地址预留]]></description><category></category></item><item><title><![CDATA[openEuler 设置默认启动项失败]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/129443359</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/129443359</guid><author>Enosji</author><pubDate>Fri, 10 Mar 2023 15:18:07 +0800</pubDate><description><![CDATA[目录下面的同名文件的，所以我们需要重新生成下这个文件。这个时候再去输入命令，就会查看到这个文件被修改了。无法设置默认启动内核并且会报错。查看文件发现里面没有数据，]]></description><category></category></item><item><title><![CDATA[内核定时器的使用]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/127490830</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/127490830</guid><author>Enosji</author><pubDate>Mon, 24 Oct 2022 13:57:38 +0800</pubDate><description><![CDATA[（1）内核是给应用层提供接口的，一般延时都是由用户来完成的。所以在内核中不会使用延时函数，都是用内核定时器来完成。]]></description><category></category></item><item><title><![CDATA[offsetof宏与container_of宏]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/126784055</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/126784055</guid><author>Enosji</author><pubDate>Fri, 09 Sep 2022 15:36:40 +0800</pubDate><description><![CDATA[内核中的offsetof宏与container_of宏的解释]]></description><category></category></item><item><title><![CDATA[使用copy_*_user 函数族传递带有指针的结构体]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/125676400</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/125676400</guid><author>Enosji</author><pubDate>Fri, 08 Jul 2022 13:17:42 +0800</pubDate><description><![CDATA[使用copy_*_user函数族传递带有指针的结构体方法]]></description><category></category></item><item><title><![CDATA[【Makefile】编译偏好设置]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/125365972</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/125365972</guid><author>Enosji</author><pubDate>Mon, 20 Jun 2022 09:09:32 +0800</pubDate><description><![CDATA[在编译过程中我们发现移植过来的程序编译出现好多warning报错导致编译停止，理论上我们需要将这些报错一一排查后再编译生成，但是由于移植程序体量较大，且报错太多但是warning报错不影响程序的运行，我们选择在makefile中将编译等级降低，这样就算有warning报错也是可以编译生成升级文件的。.........]]></description><category></category></item><item><title><![CDATA[【GD32F407】i2c主机发送，从机中断接收]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/123198302</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/123198302</guid><author>Enosji</author><pubDate>Tue, 01 Mar 2022 09:54:34 +0800</pubDate><description><![CDATA[前言
现在手里负责的一个项目需要用i2c和主芯片进行通信主动发送，中断接收，这就需要支持i2c主机模式和从机模式，先查看原理图


这里我们用到了两条i2c总线进行数据的交替传输，避免在使用一条总线是发送数据和接收数据冲突
初始化i2c控制器
s32_k i2cDevInit(u8 byBusId, TI2cBus *pTI2cBus)
{
	
	//PCLK = 36000000
	BOOL retFlg = FALSE;
	int I2xSCL 	= pTI2cBus-&gt;byFastMode ? ]]></description><category></category></item><item><title><![CDATA[【GD32F407】使用ADC读取电压]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/123041522</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/123041522</guid><author>Enosji</author><pubDate>Mon, 21 Feb 2022 10:34:45 +0800</pubDate><description><![CDATA[基于GD32F407使用ADC读取电压
背景
手上一个新的项目需要用到ADC进行电压检测，由于我也是第一次使用GD32所以在这里记录下，项目上有20多处需要进行电压检测，根据需求采用的是轮询的方式去查看电压值。
代码实现
以下都是我需要进行的ADC配置引脚



初始化IO和时钟
		rcu_periph_clock_enable(RCU_GPIOF);			//使能GPIO
		rcu_periph_clock_enable(RCU_GPIOA);	
		rcu_periph_clock_enable(R]]></description><category></category></item><item><title><![CDATA[移植dropbear到开发板]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/122620483</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/122620483</guid><author>Enosji</author><pubDate>Fri, 21 Jan 2022 14:25:27 +0800</pubDate><description><![CDATA[添加dropbear功能
介绍
由于OpenSSH因为其相对较大，一般不太适用于嵌入式平台，多用于PC或者服务器的Linux版本中。而Dropbear是由Matt Johnston所开发的Secure Shell软件（包括服务器端与客户端）。期望在存储器与运算能力有限的情况下取代OpenSSH，Dropbear特别用于“嵌入”式的Linux（或其他Unix）系统，如无线路由器。
配置编译dropbear
由于dropbear依赖zlib的库所以在编译dropbear之前需要先编译zlib
（1）编译zlib]]></description><category></category></item><item><title><![CDATA[【GD32F407】 读写内部flash函数]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/122575528</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/122575528</guid><author>Enosji</author><pubDate>Wed, 19 Jan 2022 11:19:45 +0800</pubDate><description><![CDATA[GD32的flash特征

1、在flash的前512K字节空间内，CPU执行指令零等待；在此范围外，CPU读取指令存在较长延时；
2、对于flash大于1024KB（不包括等于1024KB）的，使用了两片闪存；前1024KB容量在第一片闪存（bank0）中，后续的容量在第二片闪存（bank1）中；
3、对于flash容量小于等于1024KB，只使用了bank0；
4、支持32位整字或16位半字编程，页擦除和整片擦除操作；


GD32 flash内部结构

bank0 内存分布入下





ban...]]></description><category></category></item><item><title><![CDATA[linux下使用iptable单网卡实现Nat共享上网]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/122120901</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/122120901</guid><author>Enosji</author><pubDate>Fri, 24 Dec 2021 09:20:14 +0800</pubDate><description><![CDATA[一、单网卡实现Nat共享上网

介绍

在开发过程中我们会遇到设备有时需要用一个网卡配置两个ip，一个负责连接外部网络，一个负责和下层设备进行通信，但是又有需要下层设备拥有访问外网的能力，这个时候我们就可以用Nat转发功能将下层设备发送过来的数据转发到外网上去（图画的不标准，只是表达个意思(lll￢ω￢)）





操作方法

注意：我们将使用iptable工具进行Nat转发，以下操作的基础是配置了iptable工具

（1）配置主机内外网ip

我们需要给主机的一个网卡设置多个内网ip用来和下层设备进.]]></description><category></category></item><item><title><![CDATA[iptable 移植到开发板]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/121975641</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/121975641</guid><author>Enosji</author><pubDate>Thu, 16 Dec 2021 15:24:50 +0800</pubDate><description><![CDATA[官网下载iptable源码，这里使用的是1.4.21版本的

下载：http://ftp.netfilter.org/pub/iptables/iptables-1.4.21.tar.bz2

（1）解压文件进入解压后的文件夾


$ tar -xvf iptables-1.4.21.tar.bz2
$ cd iptables-1.4.21/

（2）config

进行config配置


$ ./configure CC=linux-gnuspe-gcc --host=linux-gnuspe \
--]]></description><category></category></item><item><title><![CDATA[服务器镜像站点列表]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/121716685</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/121716685</guid><author>Enosji</author><pubDate>Sat, 04 Dec 2021 15:33:53 +0800</pubDate><description><![CDATA[其他几个国内的源：
#中科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main res.]]></description><category></category></item><item><title><![CDATA[sdio wifi 移植]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/121513074</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/121513074</guid><author>Enosji</author><pubDate>Wed, 24 Nov 2021 13:14:08 +0800</pubDate><description><![CDATA[介绍

简单来说，sdio起源自sd标准，顾名思义就是sd的IO接口（interface）的意思，更具体的说明，sd本来是记忆卡的标准，但是现在也可以把SD卡拿来插上一些外围设备接口使用，这个就是就叫做sdio。

而且sdio本身是一种相当单纯的技术，通过sd的IO引脚来连接外部外围，并且通过sd的IO数据接位与外围传输数据，而且sd协会也推出很完整的sdio stack 驱动程序，使得sdio外围得开发与应用变得非常热门

这里我们要移植的是RTL8822cs的sdio WiFi 模块，将其移植到rk3]]></description><category></category></item><item><title><![CDATA[iptables 限制ip配置]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/121403086</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/121403086</guid><author>Enosji</author><pubDate>Thu, 18 Nov 2021 16:02:09 +0800</pubDate><description><![CDATA[介绍

很多时候我们都叫他防火墙但是其实iptables不算是真正的防火墙，我们其实可以把它理解为一个客户端代理，用户通过iptables这个代理，将用户的安全设定执行到对应的安全框架中，而这个安全框架才是真正的防火墙，这个框架名字叫netfilter。

netfilter才是防火墙真正的安全框架（framework），netfilter位于内核空间，而iptables其实是一个命令行工具，位于用户空间，我们用这个工具去操作真正的框架。

iptables功能非常强大且免费，这里只记录限制IP的功能

限]]></description><category></category></item><item><title><![CDATA[IPV6 设置ip和网关]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/121402139</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/121402139</guid><author>Enosji</author><pubDate>Thu, 18 Nov 2021 15:37:42 +0800</pubDate><description><![CDATA[需要ipv6的原因

目前，嵌入式视频监控系统已成为国内外视频监控系统应用的主流，但是在 ipv4平台下存在地址不足、不能合理分配带宽、安全性能及移动性能差等诸多问题，而新一代 IPv6协议不仅能很好的解决以上问题，而且还具有可以提高视频传输速度和传输质量等多方而的优点。如何使嵌入式视频监控系统与 IPv6技术相结合是当前监控系统研究的一个重要方向。

设置ip和网关

（1）查看开发板是否支持


[root@RK356X:/]# ifconfig 
eth0      Link encap:Ethern]]></description><category></category></item><item><title><![CDATA[valgrind 调试工具移植开发板]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/121243953</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/121243953</guid><author>Enosji</author><pubDate>Wed, 10 Nov 2021 10:58:23 +0800</pubDate><description><![CDATA[（1）官网下载：Valgrind Homehttps://www.valgrind.org/ ，这里我们使用的3.18.1版本的valgrind

（2）下载解压压缩包


$ tar -xvf valgrind-3.18.1.tar.bz2
$ cd valgrind-3.18.1
$ sudo apt-get install automake # 有就不需要安装
$ ./autogen.sh		# 需要安装automake

（3）配置编译安装


$ vi configure
 armv7*)
   ]]></description><category></category></item><item><title><![CDATA[git环境搭建]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/121223554</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/121223554</guid><author>Enosji</author><pubDate>Tue, 09 Nov 2021 11:04:51 +0800</pubDate><description><![CDATA[1、根据开发环境判断是否需要实现安装git


$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get install openssh-client
$ sudo apt-get install git-core
$ sudo apt-get install curl

2、生成公钥，用于系统认证


$ ssh-keygen -t -rsa                 //一路回车到底
$ cd ~/.ssh          ]]></description><category></category></item><item><title><![CDATA[内核编译`warning`停止编译]]></title><link>https://blog.youkuaiyun.com/Enosji/article/details/121119455</link><guid>https://blog.youkuaiyun.com/Enosji/article/details/121119455</guid><author>Enosji</author><pubDate>Wed, 03 Nov 2021 13:56:23 +0800</pubDate><description><![CDATA[有时我们会遇到编译时警告（warning）被视为错误（error）等问题

在编译时遇到warning但是却导致内核停止编译，但是在另一个内核中这个错误就没有终止编译


warning: initialization makes integer from pointer without a cast 
……

为什么有的内核编译时警告被视为了错误

选项
			含义
		-pedantic
			允许发出ANSI C标准所列的全部警告信息
		-pedantic-error
			允许发出ANSI C标.]]></description><category></category></item></channel></rss>