<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Dfish_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Dfish_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Dfish_]]></copyright><item><title><![CDATA[Makefile模板]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/106038045</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/106038045</guid><author>Dfish_</author><pubDate>Sun, 10 May 2020 17:12:55 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[动态库和静态库的制作和使用]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105988746</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105988746</guid><author>Dfish_</author><pubDate>Fri, 08 May 2020 09:52:58 +0800</pubDate><description><![CDATA[静态库的制作和使用步骤：
1、生成.o文件，将.o文件移到相应文件夹中
2、执行命令 ar rcs libCalc.a .o（可将.o文件一个个列出代替.o）
3、生成的libCalc.a文件即静态库

使用bc命令（quit退出），计算.o文件之和小于libCalc.a的大小


gcc编译main.c，-o命名为app，-I include/src 链接.h头文件，-L lib/ -lCalc...]]></description><category></category></item><item><title><![CDATA[嵌入式课堂笔记10]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105925633</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105925633</guid><author>Dfish_</author><pubDate>Mon, 04 May 2020 23:30:42 +0800</pubDate><description><![CDATA[一、网络基础
1、为什么需要网络通信？
①进程间通信解决的是本机内通信
②网络通信解决的是任意不同机器通信
2、实现网络通信需要哪些支持？
①通信设备
网卡：PC机自带
路由器，交换机
光纤、电缆、基站
②通信协议（发什么数据，怎么发数据，发完数据后做什么）
操作系统自带协议栈；（Linux的特点：丰富的网络协议）（使用通信协议）
裸机开发需要独立的协议栈
③简单网络通信只需要学会使用系统API（...]]></description><category></category></item><item><title><![CDATA[嵌入式课堂笔记09]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105801211</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105801211</guid><author>Dfish_</author><pubDate>Mon, 27 Apr 2020 22:20:48 +0800</pubDate><description><![CDATA[信号：是一种向进程发送通知，告诉其某件事情发生了的一种简单通信机制
信号的产生：另一个进程发送信号
内核发送信号
底层硬件发送信号
段错误



常用信号：SIGABRT 6 终止进程，调abort函数时产生
SIGALRM 14 超时，调用alarm函数时产生
SIGBUS  7 硬件故障
SIGCHLD 17 子进程状态改变
SIGINT  2 终止进程（ctrl+c）
SIGIO 29异步通...]]></description><category></category></item><item><title><![CDATA[基础Day10(内存结构)]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105788262</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105788262</guid><author>Dfish_</author><pubDate>Mon, 27 Apr 2020 12:53:11 +0800</pubDate><description><![CDATA[全局变量和局部变量



静态、声明、函数


static 修饰的变量只能在一个文件中使用
声明




作用域和声明周期

内存四区模型
代码区：程序指令
数据区：（静态区 全局区）（Linux系统编程会将数据区拆开讲解）
（1）初始化数据
1）、初始化的全局变量
2）、初始化的静态全局变量
3）、初始化的静态局部变量
（2）未初始化数据
1）、未初始化的静态局部变量 默认初始值为0
2）、未...]]></description><category></category></item><item><title><![CDATA[基础Day0809(指针)]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105760458</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105760458</guid><author>Dfish_</author><pubDate>Sun, 26 Apr 2020 00:29:17 +0800</pubDate><description><![CDATA[一个很显然的事实是，sizeof结果类型是size_t，它是无符号的，而%d用来输出int，是有符号的。
64位系统，这个位数指的是CPU 里面的通用寄存器的数据宽度为64位，也就是说一个地址占二进制位数是64，所以：sizeof(double *)==sizeof(int *)==sizeof(char *)64/88
32位系统，同理，它的一个地址占32位二进制空间，sizeof(double...]]></description><category></category></item><item><title><![CDATA[嵌入式课堂笔记8]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105524186</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105524186</guid><author>Dfish_</author><pubDate>Tue, 14 Apr 2020 23:31:33 +0800</pubDate><description><![CDATA[嵌入式Linux多任务：进程、线程
硬件条件：单个CPU单个核
单任务：一个任务执行完毕之后下个任务才能执行
多任务：任务的执行可以被中断，中断之后可以执行其他任务；（并发/并行）
单核CPU：并发
多核CPU：并发、并行
进程实现多任务；
特点：给每个进程分配独立的地址空间，4G的大小（1G内核，3G用户空间：栈、堆、数据段、代码段）；互不干扰
进程创建方式：fork &gt;exec函数族 &...]]></description><category></category></item><item><title><![CDATA[嵌入式课堂笔记7]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105494543</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105494543</guid><author>Dfish_</author><pubDate>Mon, 13 Apr 2020 18:14:09 +0800</pubDate><description><![CDATA[fprintf
表头文件：#include&lt;stdio.h&gt;
定义函数：
int fprintf(FILE *stream,const char *format,…);
函数说明：
fprintf()会根据参数format字符串来转换并格式化数据，然后将结果输出到参数stream指定的文件中，直到出现字符串结束(‘\0’)为止。
返回值：
成功则返回实际输出的字符数，失败则返回-1，错...]]></description><category></category></item><item><title><![CDATA[基础Day07(函数)]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105442098</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105442098</guid><author>Dfish_</author><pubDate>Fri, 10 Apr 2020 21:15:28 +0800</pubDate><description><![CDATA[函数
函数格式
函数返回值类型 函数名（参数列表）
{
函数体
return 返回值;
}
函数定义中参数列表中的数据称为函数的形式参数—形参，形参不能直接赋值
在定义函数时指定的形参，必须是，类型+变量的形式

形参接收实参，在函数内部进行运算。




函数的返回值要和函数返回类型相同
程序中无论遇到哪个return，就代表函数结束
exit(0)代表程序结束
函数的参数列表，可包含多个参数，...]]></description><category></category></item><item><title><![CDATA[基础Day07(字符串处理函数)]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105314990</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105314990</guid><author>Dfish_</author><pubDate>Mon, 06 Apr 2020 20:15:03 +0800</pubDate><description><![CDATA[1、gets()和puts()
gets()：从标准设备上获取一个字符串，这个字符串可以带空格，直到接收到换行字符或者字符串结束标志才停止（不安全）
puts()：从标准设备上输出一个字符，这个字符串自带‘\n ’换行

2、fgets()和fputs()
fgets()格式：fgets(字符指针 大小 输入流[stdin])（安全，会接收固定大小的字符串）
注意：（1）如果接收少于大小 会将\n...]]></description><category></category></item><item><title><![CDATA[嵌入式课堂笔记6]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105349021</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105349021</guid><author>Dfish_</author><pubDate>Mon, 06 Apr 2020 18:56:08 +0800</pubDate><description><![CDATA[在我们之前所学习的C语言编程中，我们所学习的都是无os的语法，是因为之前我们所设计的东西都缺少操作系统，操作系统是可以用来管理资源的，不管是软件还是硬件。
嵌入式Linux系统开发：通过内核提供的服务实现相应功能
C语言程序设计：无os语法
1、Linux系统空间划分：用户空间、内核空间
2、划分空间目的：保护内核空间不能被用户空间随便访问
3、用户空间不能随便访问内核空间，访问内核空间必须发送系...]]></description><category></category></item><item><title><![CDATA[嵌入式课堂笔记5]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105204721</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105204721</guid><author>Dfish_</author><pubDate>Mon, 30 Mar 2020 21:56:25 +0800</pubDate><description><![CDATA[1、变量
使用方式：$(变量名)
例：变量obj代替“a.o b.o”

Make工程管理器中变量定义方式
（1）“=”
例：a1的值为a.o

（2）“:=”
例：a1的值是a.o，a2的值是a.o b.o

a1的值是b.o，而不是“a.o b.o”：

即前面的变量不能通过后面的变量来定义。
（3）“+=”
例：a1的值是“a.o b.o”，“+=”可以实现给变量追加值。

a1的值是“a....]]></description><category></category></item><item><title><![CDATA[基础Day06（数组案例）]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105168192</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105168192</guid><author>Dfish_</author><pubDate>Sat, 28 Mar 2020 20:52:24 +0800</pubDate><description><![CDATA[1、*打印等腰三角形


2、冒泡排序

3、二维数组



4、字符串数组


5、随机数


6、双色球




]]></description><category></category></item><item><title><![CDATA[基础Day02]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/105158826</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/105158826</guid><author>Dfish_</author><pubDate>Sat, 28 Mar 2020 12:11:57 +0800</pubDate><description><![CDATA[用户权限：
su 切换用户账户
格式：
【su 用户名 】
【su】 切换到root
【su root】 切换到root
【su -】 切换到root用户 同时切换到root目录
添加组：
【groupadd 组名】  添加组  需要用户权限
删除组
【groupdel 组名】  删除组  需要用户权限和清空组成员
修改用户所在组：
【usermod -g 组名 用户名1 用户名2】需要用户权限
...]]></description><category></category></item><item><title><![CDATA[基础day01]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/104914040</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/104914040</guid><author>Dfish_</author><pubDate>Tue, 24 Mar 2020 17:04:15 +0800</pubDate><description><![CDATA[打开终端：ctrl+alt+t
清屏：ctrl+l
在终端在退出锁定：ctrl+c
目录：又称为文件夹，是包含所有的文件
目录创建规则：
1、大小是256
2、不能包含特殊字符
3、见名知义
路径：是反应目录和文件的位置
[绝对位置]文件位置：windows：盘符：\文件夹\文件.avi
linux: /home/主文件夹/0520/day01/a
[相对位置]当前目录所在位置为 0520 ./d...]]></description><category></category></item><item><title><![CDATA[嵌入式课堂笔记4]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/104925958</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/104925958</guid><author>Dfish_</author><pubDate>Tue, 17 Mar 2020 17:06:33 +0800</pubDate><description><![CDATA[学习笔记4：
:
一、调试器：gdb
1、GNU计划的工具；内核调试KGDB
2、程序错误分类：
1）编译时错误：语法错误
2）运行时错误：内存错误，逻辑错误
3、gdb的功能：
1）运行程序；
2）设置断点；
3）查看变量值
4、hello.c  gcc -g hello.c -o hello  gdb hello
5、使用（list）
–tui:
layout asm（显示汇编）
layout...]]></description><category></category></item><item><title><![CDATA[gcc-static 的作用]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/104907899</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/104907899</guid><author>Dfish_</author><pubDate>Mon, 16 Mar 2020 20:57:40 +0800</pubDate><description><![CDATA[原文链接：https://blog.youkuaiyun.com/kksdw/article/details/104797905
刚发现，这是一个神奇的命令！
比如，现在有个简单的程序。该程序依赖于动态库libpthread.so
#include &lt;stdio.h&gt;
#include &lt;pthread.h&gt;
/* this function is run by the second ...]]></description><category></category></item><item><title><![CDATA[嵌入式课堂笔记3]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/104905302</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/104905302</guid><author>Dfish_</author><pubDate>Mon, 16 Mar 2020 18:34:47 +0800</pubDate><description><![CDATA[嵌入式linux开发工具 vim gcc gdb make
gcc编译器：学会制作动态库和静态库及使用与区别
gdb调试器：设置断点、单步执行、调试内存错误
make工程管理器：编写makefile文件
Linux文本编辑器：vim–功能最强大的文本编辑器–拜托鼠标；
Vi–vim–gvim：命令行模式、插入模式（i）、低行模式（shift+:）
Vim hello.c
Esc+shift+:+w...]]></description><category></category></item><item><title><![CDATA[20个Linux命令]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/104758640</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/104758640</guid><author>Dfish_</author><pubDate>Mon, 09 Mar 2020 20:09:49 +0800</pubDate><description><![CDATA[1、shutdown：关机，超级用户使用
shoutdown [-h] [-i] [-k] [-m] [-t]
2、reboot：重启，超级用户使用
reboot [-n] [-w] [-d] [-f] [-i]
3、diff：比较两个文件的不同，所有用户
diff [参数] 源文件 目标文件
4、cat：连接文件并打印到标准输出设备上
cat [-AbeEnstTuv] [–help] [–ve...]]></description><category></category></item><item><title><![CDATA[嵌入式课堂笔记2（简单的命令）]]></title><link>https://blog.youkuaiyun.com/Dfish_/article/details/104740995</link><guid>https://blog.youkuaiyun.com/Dfish_/article/details/104740995</guid><author>Dfish_</author><pubDate>Mon, 09 Mar 2020 11:32:14 +0800</pubDate><description><![CDATA[学习笔记2：
win32定位是普通用户，主张简单，而Linux定位是开发人员，更讲求效率。这次的学习除了POSIX标准、GPL协议、GNU计划外，还接触了一些目录的作用及命令的用法。
Linux文件的分类：
–普通文件：以“-”开头，
–目录文件：以“d”开头，
–设备文件：以“c”开头的为字符设备，以“b”开头的维块设备，
–链接文件：以“l”开头，
目录及其作用：

...]]></description><category></category></item></channel></rss>