<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Egean的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Egean</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Egean]]></copyright><item><title><![CDATA[【Nuttx】realloc流程]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/129989571</link><guid>https://blog.youkuaiyun.com/Egean/article/details/129989571</guid><author>Egean</author><pubDate>Mon, 10 Apr 2023 22:19:03 +0800</pubDate><description><![CDATA[此处讨论的是nuttx的堆内存管理，其中内存管理模型如下图所示。]]></description><category></category></item><item><title><![CDATA[【FFmpeg】自定义编码器适配]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/129625763</link><guid>https://blog.youkuaiyun.com/Egean/article/details/129625763</guid><author>Egean</author><pubDate>Mon, 10 Apr 2023 22:10:31 +0800</pubDate><description><![CDATA[首先是输入零拷贝，输入yuv是外部申请的，编码器只是使用，对于一个阻塞的编码器（即送帧后需要阻塞等待该帧编码完成），这个设计是相对简单的，只需要将frame的地址告诉编码器即可，从编码开始到结束只有一个yuv buffer，编码完成后意味这一帧也消耗完了；的实现，libx264的流程比较繁琐，总结为流程图如下，x264_encoder_encode为非阻塞接口，内部存在yuv的拷贝，调用后不一定会获取到一帧编码好的码流，但获取到之后，同样需要拷贝到输出pkt中。如果是simple流程，则调用的是。]]></description><category></category></item><item><title><![CDATA[【FFmpeg】编码器流程分析]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/129625116</link><guid>https://blog.youkuaiyun.com/Egean/article/details/129625116</guid><author>Egean</author><pubDate>Mon, 10 Apr 2023 22:02:43 +0800</pubDate><description><![CDATA[介绍ffmpeg编码器软件调用流程]]></description><category></category></item><item><title><![CDATA[算法与数据结构——c语言描述01：分治、求最大公约数、快速求幂]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/105169180</link><guid>https://blog.youkuaiyun.com/Egean/article/details/105169180</guid><author>Egean</author><pubDate>Sat, 28 Mar 2020 22:12:19 +0800</pubDate><description><![CDATA[算法分析0. 介绍1. 数学基础2. 要分析的问题2.2 最大子序列和问题2.2 求最大公约数2.3 快速求幂算法总结
0. 介绍
由于工作和学习中上用不到，在算法和数据结构方面的基础基本没有，而由于要考公司的c语言工作级认证，发现没有这方面的知识是完全考不上的，所以回过头来学习算法和数据结构，书就直接上Mark Allen Weiss的《数据结构与算法分析——C语言描述》了，以下是一些自己写的例...]]></description><category></category></item><item><title><![CDATA[数字视频编码技术原理_笔记（5~8章）]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/89231616</link><guid>https://blog.youkuaiyun.com/Egean/article/details/89231616</guid><author>Egean</author><pubDate>Sun, 21 Apr 2019 11:18:34 +0800</pubDate><description><![CDATA[5. 量化
量化主要应用于从连续的模拟信号到数字信号的转换，其作用主要是将信号的连续取值近似为多个离散值，即量化相当于一个多对一的映射过程，通过量化降低了数据量。
5.1 量化的基本原理
5.1.1 基本概念
对于输入的连续信号X，量化映射Q对[xk,xk+1)[x_k, x_{k+1})[xk​,xk+1​)区间内的所有输入信号都用yky_kyk​来近似表示，即：
Y=Q(X)=yk,X∈[xk...]]></description><category></category></item><item><title><![CDATA[数字视频编码技术原理_笔记（1~4章）]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/88910237</link><guid>https://blog.youkuaiyun.com/Egean/article/details/88910237</guid><author>Egean</author><pubDate>Wed, 10 Apr 2019 11:31:38 +0800</pubDate><description><![CDATA[书是高文的《数字视频编码技术原理》（第二版），简单做下笔记

1. 概论
1.1 色彩空间
常用的色彩空间表示方法有RGB和YUV。

RGB色彩空间是直接基于三原色来表达彩色图像，一个像素需要用三个样值表示，RGB三个基本色度对混合色度具有同样重要的作用，通常使用同样的精度来表示RGB的三个基本色度值。
人的视觉系统（HVS）对亮度的感知比色度的感知更加敏感，因此将色彩空间分为亮度（Y）和色度...]]></description><category></category></item><item><title><![CDATA[树莓派、51、arduino和树莓派几种常用芯片及开源硬件的比较]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/87208424</link><guid>https://blog.youkuaiyun.com/Egean/article/details/87208424</guid><author>Egean</author><pubDate>Wed, 13 Feb 2019 21:16:15 +0800</pubDate><description><![CDATA[



血统
IDE
语言
价格
硬件资源
下载方式
开发难度




51
KEIL
C
3~10
PWM/AD/SPI/UART
串口
简单


stm32
KEIL/IAR
C
12
PWM/AD/DMA/I2C/SPI/UART/CAN/USB
串口/编程器
较难


arduino
arduino ide
类C
12
PWM/AD/I2C/SPI/UART
串口
最简单


树莓派
li...]]></description><category></category></item><item><title><![CDATA[ARM+Linux嵌入式开发05：【uboot-2017移植】重定位]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/85334942</link><guid>https://blog.youkuaiyun.com/Egean/article/details/85334942</guid><author>Egean</author><pubDate>Sun, 30 Dec 2018 12:08:31 +0800</pubDate><description><![CDATA[概述
上一节初始化好了串口和LED，我们可以用它们进行调试；也设置好了时钟和DRAM，为uboot的重定位做好准备。之前所做的所有工作都是在BL1中，也就是uboot的前16KB，而大部分uboot的代码还在SD卡中没有载入内存，没有载入内存的原因是之前我们使用的是内部SRAM，容量不足以放下整个uboot，而现在已经初始化好了外部DRAM，拥有了512MB内存，是完完全全够放下整个uboot，所...]]></description><category></category></item><item><title><![CDATA[ARM+Linux嵌入式开发04：【uboot-2017移植】底层硬件初始化]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/84999909</link><guid>https://blog.youkuaiyun.com/Egean/article/details/84999909</guid><author>Egean</author><pubDate>Sat, 15 Dec 2018 12:31:27 +0800</pubDate><description><![CDATA[概述
上一节讲了uboot启动的第一阶段，其中会调用一个lowlevel_init函数对进行底层硬件初始化，然后完成重定位，这一节开始对底层硬件初始化作介绍，主要包括：LED灯，电源锁存，时钟，串口。
LED灯
打开board/samsung/x210/lowlevel_init.S文件，查看lowlevel_init()函数，首先是检查是否需要重定位：
ldr	r0, =0x0000ffff
	...]]></description><category></category></item><item><title><![CDATA[ARM+Linux嵌入式开发03：【uboot-2017移植】uboot启动第一阶段]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/84923005</link><guid>https://blog.youkuaiyun.com/Egean/article/details/84923005</guid><author>Egean</author><pubDate>Sun, 09 Dec 2018 11:37:33 +0800</pubDate><description><![CDATA[概述
上一章讲到210.bin是u-boot.bin的前16KB程序，也就是BL1，根据s5pv210的启动流程，这段程序的作用是初始化DRAM，然后将BL2载入DRAM当中，最后跳转到DRAM运行。要分析这段程序，就要了解uboot的启动过程以及源码构成。
从上电到进入_main函数之前
uboot启动总的来说可以分为两个大的阶段，第一个是从上电到进入_main()之前，这部分代码是在对芯片运行...]]></description><category></category></item><item><title><![CDATA[ARM+Linux嵌入式开发02：【uboot-2017移植】s5pv210载入BL1]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/84889565</link><guid>https://blog.youkuaiyun.com/Egean/article/details/84889565</guid><author>Egean</author><pubDate>Sat, 08 Dec 2018 11:33:06 +0800</pubDate><description><![CDATA[概述

]]></description><category></category></item><item><title><![CDATA[ARM+Linux嵌入式开发01：【uboot-2017移植】s5pv210启动流程]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/84873558</link><guid>https://blog.youkuaiyun.com/Egean/article/details/84873558</guid><author>Egean</author><pubDate>Fri, 07 Dec 2018 13:57:16 +0800</pubDate><description><![CDATA[概述
在开始代码讲解之前，先看s5pv210的启动流程，因为uboot的初始化代码就是建立在芯片启动流程基础上的。三星系列芯片针对的都是手机、平板电脑等运行操作系统的设备，使用的是ARM-Cortex A系列架构，而不同于如STM32等单片机使用ARM-Cortex M系列架构，其中A系列针对是应用级处理器，M针对的是微控制器，下面引用一段博客的介绍1：

ARMv7开始以Cortex来命名，并分...]]></description><category></category></item><item><title><![CDATA[ARM+Linux嵌入式开发00：【介绍】硬件、uboot、Linux内核和根文件系统]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/84667220</link><guid>https://blog.youkuaiyun.com/Egean/article/details/84667220</guid><author>Egean</author><pubDate>Fri, 30 Nov 2018 21:39:46 +0800</pubDate><description><![CDATA[概述
从学嵌入式以来，还没有真正意义上的进行过uboot或Linux内核的移植，于是为了满足自己的好奇心和探索精神，打算将最新的uboot和Linux内核移植到开发板上，最近移植也接近了尾声，因此打算开一个深坑：写一篇较为完整的uboot+linux+rootfs移植的文章，如果有幸有人能读到，也是一种参考。
平台介绍




开发板
九鼎x210（s5pv210）




bootloader
...]]></description><category></category></item><item><title><![CDATA[将sd卡格式化为ext4格式并挂载]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/84249607</link><guid>https://blog.youkuaiyun.com/Egean/article/details/84249607</guid><author>Egean</author><pubDate>Mon, 19 Nov 2018 14:50:56 +0800</pubDate><description><![CDATA[1. 介绍
uboot加载内核时会从sd中读取内核镜像，和老版本的uboot不同，新版本的uboot支持文件系统，直接将内核镜像复制到sd卡中，然后uboot启动时就会访问sd卡的文件系统，找到内核镜像文件并加载。uboot支持什么文件系统是是由环境变量loaduimage决定的，这里我的环境变量为：
loaduimage=ext4load mmc ${mmcdev}:${mmcbootpart}...]]></description><category></category></item><item><title><![CDATA[uboot和linux kernel中创建defconfig文件]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/84134584</link><guid>https://blog.youkuaiyun.com/Egean/article/details/84134584</guid><author>Egean</author><pubDate>Fri, 16 Nov 2018 10:09:38 +0800</pubDate><description><![CDATA[1. 介绍
最近在移植uboot的时候我想根据当前的.config文件创建自己的defconfig文件到configs/目录中，开始以为是直接拷贝.config文件然后重命名即可，然后想了想uboot的Makefile文件中应该是有这个功能的，但是百度时没有人提到，最后翻墙用google终于发现确实有这个功能，于是在这里记录一下。
2. 使用make命令创建defconfig文件
总结一下现在的情...]]></description><category></category></item><item><title><![CDATA[Linux驱动开发11：【设备树】nanopi的PWM驱动]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/81907809</link><guid>https://blog.youkuaiyun.com/Egean/article/details/81907809</guid><author>Egean</author><pubDate>Tue, 21 Aug 2018 15:03:23 +0800</pubDate><description><![CDATA[介绍

前两节利用设备树实现了nanopi的LED驱动和按键驱动，这一节来实现nonapi的PWM驱动。PWM驱动在内核中也有相应的实现，因此这里只是按照要求添加设备树文件即可。这一节和之前一样，首先修改设备树文件进行测试，然后分析内核相应的软件实现。



添加设备树节点

因为在sunxi-h3-h5.dtsi和sun8i-h3-nanopi.dtsi文件中已经定义了PWM节点



// s...]]></description><category></category></item><item><title><![CDATA[Linux驱动开发10：【设备树】nanopi的按键驱动]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/81867633</link><guid>https://blog.youkuaiyun.com/Egean/article/details/81867633</guid><author>Egean</author><pubDate>Mon, 20 Aug 2018 10:53:04 +0800</pubDate><description><![CDATA[介绍

这一节在nanopi上实现按键驱动，和LED驱动一样，通用的按键驱动在linux内核中已经实现好，我们只需要按照要求写好设备树即可，不用我们自己实现按键驱动。这一节中首先修改设备树并测试按键驱动，然后分析drivers/input/keyboard/gpio_keys.c文件，看按键驱动是如何实现的。



添加设备树节点

在sun8i-h3-neo-nanopi-air.dtsi文件中...]]></description><category></category></item><item><title><![CDATA[Linux驱动开发09：【设备树】nanopi的LED驱动]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/81806139</link><guid>https://blog.youkuaiyun.com/Egean/article/details/81806139</guid><author>Egean</author><pubDate>Sat, 18 Aug 2018 10:22:48 +0800</pubDate><description><![CDATA[介绍

这节通过在nanopi的设备树中添加LED子节点，来实现一个LED驱动。由于linux内核支持LED驱动框架并且有通用的LED驱动，因此这里只需按照驱动要求添加设备树节点就可以了，不用我们自己重写LED驱动。这一节先在设备树中添加一个LED节点，重新编译设备树测试效果，然后对内核中drivers/leds/leds-gpio.c进行分析，看该LED驱动是如何实现的。



添加设备树节点
...]]></description><category></category></item><item><title><![CDATA[Linux驱动开发08：【设备树】MPU6050驱动和i2c驱动]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/81771875</link><guid>https://blog.youkuaiyun.com/Egean/article/details/81771875</guid><author>Egean</author><pubDate>Fri, 17 Aug 2018 09:00:30 +0800</pubDate><description><![CDATA[介绍

上一节在nanopi设备树的I2C节点下增加了一个MPU6050的子节点，并在sysfs中查看到了该节点已经被正确解析，这一节我们来修改之前的MPU6050驱动，使之能够匹配到我们的设备树节点，然后再分析设备树节点是如何加载到i2c总线上的。



MPU6050驱动的变更

在之前的MPU6050驱动中，为了方便测试，我们是在模块的init函数中临时注册了一个i2c_client到i2c...]]></description><category></category></item><item><title><![CDATA[Linux驱动开发07：【设备树】分析nanopi设备树，添加I2C子节点]]></title><link>https://blog.youkuaiyun.com/Egean/article/details/81196699</link><guid>https://blog.youkuaiyun.com/Egean/article/details/81196699</guid><author>Egean</author><pubDate>Wed, 25 Jul 2018 09:58:18 +0800</pubDate><description><![CDATA[介绍

本节简单介绍一下设备树，然后对nanopi的设备树文件进行分析。为了真正地体会设备树的用法，我们在现有设备树的I2C节点中尝试添加一个mpu6050的子节点，然后在nanopi的文件系统中尝试访问该节点，以验证是否添加成功。下一节会修改mpu6050的I2C驱动，使之支持该节点。



设备树简介

设备树文件是一种板级描述文件，该文件由一系列的节点和子节点组成，用于描述CPU内部资源和板...]]></description><category></category></item></channel></rss>