<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Outside_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Outside_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Outside_]]></copyright><item><title><![CDATA[FreeRTOS 内存管理策略]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132805454</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132805454</guid><author>Outside_</author><pubDate>Mon, 11 Sep 2023 15:05:56 +0800</pubDate><description><![CDATA[然后，对于 pvPortMalloc 调用时，从这个数组中分配空间。FreeRTOS 在创建任务时，需要 2 个内核对象： task control block(TCB)、 stack。]]></description><category></category></item><item><title><![CDATA[嵌入式基础知识大杂烩]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132804764</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132804764</guid><author>Outside_</author><pubDate>Mon, 11 Sep 2023 13:24:22 +0800</pubDate><description><![CDATA[u-boot（或称为Das U-Boot）是一种广泛应用于嵌入式系统的开源引导加载程序。它通常存放在嵌入式系统的非易失性存储器中，具体位置可以根据具体的嵌入式系统架构和设计来确定。总结起来，u-boot一般存放在嵌入式系统的Flash存储器中，包括NOR Flash和NAND Flash，在一些系统中也可以存放在可移动存储介质上，例如SD卡或TF卡。的情况，u-boot可以被烧写到系统的Flash存储器中。，并将u-boot存放在Flash芯片的特定地址范围内。在某些嵌入式系统中，u-boot可以存放在。]]></description><category></category></item><item><title><![CDATA[Linux 下 C语言版本的线程池]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132735859</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132735859</guid><author>Outside_</author><pubDate>Thu, 07 Sep 2023 13:40:50 +0800</pubDate><description><![CDATA[线程池是一种多线程处理形式，处理过程中将任务添加到队列，然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小，以默认的优先级运行，并处于多线程单元中。如果某个线程在托管代码中空闲（如正在等待某个事件）, 则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙，但队列中包含挂起的工作，则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队，但他们要等到其他线程完成后才启动。// 线程池结构体。]]></description><category></category></item><item><title><![CDATA[C++ 访问与继承权限]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132637022</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132637022</guid><author>Outside_</author><pubDate>Sat, 02 Sep 2023 13:14:21 +0800</pubDate><description><![CDATA[用关键字private修饰的成员称为私有成员，私有数据成员和成员函数。用关键字public修饰的成员称为公有成员，公有数据成员不仅可以在。用关键字protected修饰的成员称为保护成员，保护数据成员。，保护成员函数只允许在本类以及其子类中调用。private为类默认的访问权限限定符。，公有成员函数可以在类的内部和外部调用。]]></description><category></category></item><item><title><![CDATA[C++ 浅拷贝和深拷贝]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132636099</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132636099</guid><author>Outside_</author><pubDate>Sat, 02 Sep 2023 11:38:34 +0800</pubDate><description><![CDATA[使拷贝后的对象指针成员有自己的内存空间，即进行。]]></description><category></category></item><item><title><![CDATA[C++ 虚函数与纯虚函数]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132635092</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132635092</guid><author>Outside_</author><pubDate>Sat, 02 Sep 2023 10:18:24 +0800</pubDate><description><![CDATA[在这个示例中，我们在Shape基类中定义了两个纯虚函数area和draw。在main函数中，我们创建了一个Shape类型的指针数组，并将其指向两个不同类型的对象。在这个示例中，我们定义了一个Shape基类，它包含一个虚函数area。如果在派生类中不想实现某个纯虚函数，可以将其声明为虚函数，并提供一个默认实现。这个默认实现可以是一个空函数体，也可以是一个具体的实现，具体的实现可能会在某些情况下有用。虚函数是一种在基类中声明的函数，可以在派生类中进行重写。，根据对象的类型确定调用的函数版本，这就是所谓的。]]></description><category></category></item><item><title><![CDATA[LED 驱动 —— 最简单的 LED 驱动程序]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132479951</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132479951</guid><author>Outside_</author><pubDate>Thu, 24 Aug 2023 18:20:29 +0800</pubDate><description><![CDATA[字符设备驱动程序的框架：编写驱动程序的套路：驱动怎么操作硬件？驱动怎么和 APP 传输数据先编写驱动程序：]]></description><category></category></item><item><title><![CDATA[LED 驱动 —— 普适操作 GPIO 方法]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132478840</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132478840</guid><author>Outside_</author><pubDate>Thu, 24 Aug 2023 17:50:02 +0800</pubDate><description><![CDATA[可以设置对应寄存器使能某个 GPIO 模块(Module)有些芯片的 GPIO 是没有使能开关的，即它总是使能的参考资料：芯片手册《Chapter 28: General Purpose Input/Output(GPIO)》有 5 组 GPIO（ GPIO1～GPIO5），每组引脚最多有 32 个，但是可能实际上并没有那么多。GPIO1 有 32 个引脚： GPIO1_IO0~GPIO1_IO31；GPIO2 有 22 个引脚： GPIO2_IO0~GPIO2_IO21；]]></description><category></category></item><item><title><![CDATA[SPI 通信详解]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132458778</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132458778</guid><author>Outside_</author><pubDate>Wed, 23 Aug 2023 22:37:04 +0800</pubDate><description><![CDATA[缺点：存在一些资源浪费的现象，比如只需要单方向传输数据却又双方交换数据。，数据在SCK时钟的下降沿切换。，数据在SCK时钟的上升沿切换。，数据在SCK时钟的上升沿切换。，数据在SCK时钟的下降沿切换。，数据在SCK时钟的。，数据在SCK时钟的。，数据在SCK时钟的。，数据在SCK时钟的。]]></description><category></category></item><item><title><![CDATA[I2C 通信详解]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132456264</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132456264</guid><author>Outside_</author><pubDate>Wed, 23 Aug 2023 17:59:07 +0800</pubDate><description><![CDATA[对于指定设备（Slave Address），在指定地址（Reg Address）下，写入指定数据（Data）。对于指定设备（Slave Address），在指定地址（Reg Address）下，读取从机数据（Data），依次循环上述过程8次，即可接收一个字节（主机在接收之前，需要释放SDA）类似 123 木头人游戏。SCL 低电平期间，主机将数据位依次放到SDA线上。：SCL高电平期间，SDA从高电平切换到低电平。：SCL高电平期间，SDA从低电平切换到高电平。（主机在接收之前，需要释放SDA）]]></description><category></category></item><item><title><![CDATA[串口通信详解]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132449585</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132449585</guid><author>Outside_</author><pubDate>Wed, 23 Aug 2023 13:06:57 +0800</pubDate><description><![CDATA[将一个设备的数据传送到另一个设备，扩展硬件系统制定通信的规则，通信双方按照协议规则进行数据收发有CLK时钟信号线的通信协议是同步协议I2C(SCL)、SPI(SCLK)同时具备接收信号线和发送信号线的通信协议是全双工USART(RX、TX)、SPI。]]></description><category></category></item><item><title><![CDATA[Linux 软链接与硬链接]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132342426</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132342426</guid><author>Outside_</author><pubDate>Thu, 17 Aug 2023 16:11:05 +0800</pubDate><description><![CDATA[它引用的是文件在文件系统中的物理索引（也称为inode）。当移动或者删除原始文件时，硬链接不会被破坏，因为它所引用的是文件的物理数据而不是文件在件结构中的位置。，是linux特殊文件的一种，作为一个文件，它的数据是它所连接的文件的路径。，如果原始文件被删除，所有指向它的符号链接也就都被破坏了。（仅此而已），说白了，]]></description><category></category></item><item><title><![CDATA[Linux 驱动认知与开发流程]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132323362</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132323362</guid><author>Outside_</author><pubDate>Wed, 16 Aug 2023 17:32:02 +0800</pubDate><description><![CDATA[1）内核驱动基本框架：驱动代码编写：参考pin4driver2.c:（2）内核驱动编译：把驱动代码拷贝至 driver/char修改Makefile ，告诉编译器，要编译该驱动文件,驱动代码文件放在哪个目录下就修改哪个目录下的Makefile文件（3）驱动测试步骤：内核驱动装载：内核驱动卸载：sodu rmmod xxx 不需要写ko查看内核模块：lsmod（4）验证步骤：装载驱动驱动装载后生成设备，比如：/dev/pin4，通过。]]></description><category></category></item><item><title><![CDATA[Linux 内核编译与移植]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132321019</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132321019</guid><author>Outside_</author><pubDate>Wed, 16 Aug 2023 16:35:21 +0800</pubDate><description><![CDATA[初始化时钟，关闭看门狗，关中断，启动 ICACHE，关闭 DCACHE 和 TLB，关闭MMU，初始化 SDRAM，初始化 FLASH、串口，IIC、驱动等，重定位。二阶段：初始化一个串口，检测系统内存映射，将内核映象和根文件系统映象从 Flash上读到SDRAM空间中，为内核设置启动参数，调用内核引导Linux内核启动2. Linux 源码目录树分析。]]></description><category></category></item><item><title><![CDATA[Linux 内核认知]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132320006</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132320006</guid><author>Outside_</author><pubDate>Wed, 16 Aug 2023 15:21:39 +0800</pubDate><description><![CDATA[Linux 内核主要包括5个模块：进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。由上图可以认识到 Linux 分为三个层次：用户级、内核级、硬件级。调用 sys_call、然后调用 VFS 中的sys_open，的时候，系统就会启动一个 shell 程序， 此时它就会。所有的模块都要通过进程调度来运行。，read、write 等类似。调用 open 会通过。]]></description><category></category></item><item><title><![CDATA[Linux 文件系统目录结构]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132319253</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132319253</guid><author>Outside_</author><pubDate>Wed, 16 Aug 2023 14:52:21 +0800</pubDate><description><![CDATA[文件名称区分大小写（ 大小写敏感还需要看具体的文件系统格式 ）,以.开头的为隐藏文件,路径用/来进行分割（windows中使用\来分割）不以斜杠开始,指该文件相对于该目录的路径或某个目录的路径，不以根开始。可以作为一个简短的形式来指定一个文件名，但不具备普适性。文件名最长为255字节（字节，不是字符）。包括路径在内的文件名称最长为4095字节。文件颜色显示不同，代表了不同的文件格式。以正斜杠开始，表示该文件从根目录开始的完整位置路径，必须以根开始。在Linux系统中，目录被组织成一个:单根倒置树结构，]]></description><category></category></item><item><title><![CDATA[Linux 文件系统认知]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132318681</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132318681</guid><author>Outside_</author><pubDate>Wed, 16 Aug 2023 14:39:41 +0800</pubDate><description><![CDATA[windows: 随意（面向普通用户PC），目录即分区：C（装系统的位置）也可以随意在C盘存放文件.    D盘（用户随意发挥）Linux: 按照功能来分区，每个分区严格存放文件(开发者)，嵌入式系统可以分为4个区bootloader： 启动代码para： 启动代码向内核传递参数的位置kernel： 内核分区根分区：文件系统结构。]]></description><category></category></item><item><title><![CDATA[Linux 系统调用和库函数的区别]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132317491</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132317491</guid><author>Outside_</author><pubDate>Wed, 16 Aug 2023 13:42:44 +0800</pubDate><description><![CDATA[从用户的角度来看，系统调用和库函数似乎没有什么区别，它们都是以 C 函数的形式出现并且两者都为应用程序提供服务。但从实现者角度来看，它们之间是有根本的区别。那么，它们之间到底有哪些不同呢？在说明之前，先简单了解以下系统调用和库函数。双缓冲技术移植性系统调用本身性能缺陷系统调用和库函数的区别_系统调用与库函数和实用程序有什么区别_守望之名的博客-优快云博客。]]></description><category></category></item><item><title><![CDATA[TCP 三次握手与四次挥手]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132316783</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132316783</guid><author>Outside_</author><pubDate>Wed, 16 Aug 2023 12:28:03 +0800</pubDate><description><![CDATA[作为例子，考虑计算机S和C之间的通信，假定C给S发送一个连接请求分组，S收到了这个分组，并发 送了确认应答分组。可是，C在S的应答分组在传输中被丢失的情况下，将不知道S 是否已准备好，不知道S建立什么样的序列号，C甚至怀疑S是否收到自己的连接请求分组。在这种情况下，C认为连接还未建立成功，将忽略S发来的任何数据分 组，只等待连接确认应答分组。但是关闭连接时，当Server端收到FIN报文时，很可能并不会立即关闭SOCKET，所以只能先回复一个ACK报文，告诉Client端，"你发的FIN报文我收到了"。]]></description><category></category></item><item><title><![CDATA[Socket、TCP、HTTP 三者区别与联系]]></title><link>https://blog.youkuaiyun.com/Outside_/article/details/132315918</link><guid>https://blog.youkuaiyun.com/Outside_/article/details/132315918</guid><author>Outside_</author><pubDate>Wed, 16 Aug 2023 12:04:58 +0800</pubDate><description><![CDATA[套接字（socket）是通信的基石，是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示，包含进行网络通信必须的五种信息：连接使用的协议，本地主机的IP地址，本地进程的协议端口，远地主机的IP地址，远地进程的协议端口。应用层通过传输层进行数据通信时，TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP 协议端口传输数据。]]></description><category></category></item></channel></rss>