自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 STL中C++的map学习

前言:map是一种STL库中提供的数据存储结构,其内部实现可以自行百度。由于map是一个非线程安全的存储结构,因此必须在使用的时候加入线程锁的功能(多线程必加,否则当出现多个线程对同一个Map进行读写时导致的内存不同步)。其自身特点:1.map是使用键与键值进行比配,并且两者具有一一对应的关系。(键简称key,键值简称value)2.map的用法:map<键的类型,键值的类型...

2019-08-08 00:03:40 412

原创 Shell脚本:删除.c文件编译生成的可执行文件elf(支持传其他路径的文件夹,默认当前路径)

编译.c文件生成的可执行文件一般都比较大,因此在不用的情况下可以进行适当的清理,如果.c文件对应生成的可执行文件数量较多,通过命令的方式去删除又较为麻烦,则可以通过下面这个脚本来实现:该脚本只保证.sh后缀及.c可执行文件不可删除外,其他只要是可执行文件均可删除:因此请注意该文件夹下是否有Makefile之类的可运行文件,请谨慎使用。#!/bin/bash# This shell is...

2019-03-18 17:44:51 536

原创 shell和makefile学习:编译当前目录下的.c或.cpp文件及执行对应生成的可执行文件

前言:编写背景:最近重新开始拿起书本继续学习,因此避免不了敲打一些书本上的代码进行测试,从而达到进一步加深印象的目的。编译大型的工程来说最适合使用makefile来编译,只需写好makefile文件,然后在命令行上敲make即可(小技巧:可以通过多核编译来提高效率 命令为make -j12)makefile实现:(目前支持C++编译)文件路径:头文件及源文件默认放在同一个路径下(可...

2019-03-18 14:57:11 2444 1

原创 C语言回顾--常见的字符串操作

 前言:笔试题基本上必考题之一:字符串的处理,涉及到指针、数组、以及字符串数组;近几日的笔试字符串处理让我无从下手,因此根据近几日的笔试题,总结了一波常见的操作;1.整数与字符数字互换类型:void char_to_int( char *buf, int *num,int size)    //字符串换成数字{    int         i = 0;    int   ...

2018-09-18 16:39:05 538 2

原创 C语言回顾--4大经典排序(快速、选择、冒泡、插入)函数体实现

 前言:常见的4种算法也是笔试、面试之中最常问的问题,甚至有些笔试题其实就是这4算法的变种题目:重要的是看清题目本质;1.冒泡排序:平均复杂度:O(n^2) n~n^2 void maopao( int *list,int n) //list 为传入数组,n为数组中的个数{ int i,j,temp; for(i = 0; i&lt;n-1; i...

2018-09-16 17:59:57 471

原创 GPRS--ubifs系统的制作

前言:在根文件目录制作完成后,我们制作了initramfs内核启动系统,明白该系统的缺点不适合长期的开发,因此引入了移植ubifs系统这个想法,该系统的好处,读者们可自行百度,是目前较为流行的嵌入式根文件系统;Linux内核MTD对同一Flash分区提供了两种设备文件给用户层使用,一种是/dev/mtdblockX块设备,该设备用来建立文件系统并挂载起来使用;另外一种相对应的/dev/mt...

2018-09-05 17:37:17 290

原创 GPRS模块--完整的内核修改兼容GPRS模块

前言:重新梳理了添加GPRS模块的过程,以下对linux3.0内核进行的完整修改,用于兼容GPRS模块的同时,兼容ubifs根文件类型的系统;在开发板可以跑通linuxrom-s3c2440的基础上进行修改:[guozhihao@localhost ~]$ cd Desktop/fl2440/linux/linux-3.0        //到源码文件夹下进行修改[guozhih...

2018-09-05 14:27:40 569

原创 C语言回顾--C语言实现栈的入栈和出栈

-------------------------------------------------------------------------------------------前言:在数据结构中,栈是常见的线性表,在笔试中与队列同样重要,因此本实验用链表来实现;------------------------------------------------------------...

2018-08-24 13:55:07 7588 2

原创 C语言回顾--队列的入队和出队

-------------------------------------------------------------------------------------------前言:前几天做了海康威视的笔试题,正好大题遇上了用C语言编程实现队列的入队和出队功能;于是考完后就自己调试当时所写的代码,错误颇多,经过几小时的努力调试成功,特定发到博客上分享给大家。-----------...

2018-08-23 16:46:21 8889

原创 C语言回顾--双向链表的简单编程

-------------------------------------------------------------------------------------------前言:用C语言编写实现创建双向链表、正序遍历、逆序遍历、摧毁链表。----------------------------------------------------------------------...

2018-08-21 18:42:19 275

原创 C语言回顾--简单的单向链表头插法和尾差法编程

------------------------------------------------------------------------------------------------前言:准备笔试题绕不开数据结构,因此最近重新复习关于链表的编程包含单向链表双向链表,以及介绍在制作单向链表中用到的头插法和尾差法;---------------------------------...

2018-08-20 19:53:56 503

原创 GPRS--手动拨号编程

前言:    喔,终于熬过了期末考和实习,终于有属于自己的时间了,为了巩固之前的知识,就特此编写一个程序来实现这个功能;ps:程序本就是用来替代人手动的过程嘛。    前面我们实现了手动拨号上网,因此熟悉了拨号上网的流程,因此我们可以用程序来实现这个流程。拨号流程:1.工具准备2.软件准备3.连接准备4.手动拨号连接5.检查连接是否成功6.断开连接具体细节可参考我的pppd拨号连接博客:h...

2018-07-16 15:09:48 462

原创 GPRS模块--PPP手动拨号

 前言:    fl2440开发板介绍:https://blog.csdn.net/PipiAvenger/article/details/79563996    目前,手机端基本普遍具有GPRS模块,该模块集成了手机常见的功能如:打电话、发短信、上网等功能,那么这些常见的功能能否提供给安装了Linux最小系统的开发板使用呢?答案是肯定的,当然要实现1个模块添加到一个新的开发板上,这需...

2018-06-14 18:31:46 4508

原创 玩转开发板--CH341串口编程及测试

     开发环境:CentOS6.7(虚拟机)交叉编译器:arm-linux-gcc  gcc version 4.4.6 (crosstool-NG 1.16.0)开发板fl2440(内核版本-linux-3.0)开发模块:SIM900 GPRS串口编程:    编写串口需要注意的点:    1.串口为串行通信,全双工,异步通信,因此需要了解它的异步通信的速率;...

2018-05-05 18:05:07 3373 1

原创 玩转开发板--简单的字符设备

一.前言:    开发环境:CentOS6.7(虚拟机);    开发板fl2440使用的Linux版本3.0最小内核;    编写驱动原则:只提供机制,不实现功能;         Linux内核将设备按照访问特性分为三类:字符设备、块设备、网络设备;         字符设备(本次学习目标)     一个字符设备是一种可以当做一个字节流来存取的设备(如同一个...

2018-04-25 22:14:04 485

原创 玩转开发板--入门驱动hello模块测试篇

一.前言    学习内核编程的最简单的方式也许就是写个内核模块:一段可以动态加载进内核的代码。 二.测试    注:在哪一个环境一下就要用哪一个环境下的内核编译器    在x86环境下:      uname -r可以查看该虚拟机的内核编译器:        具体位置在/lib/modules/下:             使用命令lsmod可以查看...

2018-04-15 16:31:48 489

原创 GPRS模块--关于GPRS的AT测试命令

    准备阶段:准备模块:GPRS(SIM900b);usb转串口(ch341);提前在Windows(PC)上安装SecureCRT;        一.使用须知:    1.1物理连接:    (1)安装SIM卡(只支持移动,联通卡);    注:如果是新办的电话部分也不能用(之前新办的联通就不行)    原因为:(待补充)    (2)GPR...

2018-04-14 18:07:03 2242 5

转载 玩转开发板--几种常见的根文件系统的介绍

前言      根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统而言它还是内核启动时所挂载(mount)的第一个文件系统,系统引导启动程序会在根文件系统挂载之后把一些初始化脚本(如inittab、rcS)和服务器加载到内存中去运行。我们要明白文件系统和内核是完全独立的两个部分。     在Linux中将一个文件与一个存储设备...

2018-04-09 15:24:55 1481

原创 玩转开发板--最简单的根文件系统树的制作-7

 Linux内核使用initramfs文件系统启动     initramfs是Linux开发的一种基于内存的根文件系统,在编译Linux内核的时候,它会直接把根文件系统树打包进内核的镜像文件中(zImage),这也意味着该镜像文件同时包含了Linux内核和根文件系统。因为根文件系统是内核打包进去的,所以内核自己知道根文件系统的位置,这样u-boot也就不需要通过bootargs参数告...

2018-04-01 16:58:56 289

原创 玩转开发板--最简单的根文件系统树的制作-6

创建/etc路径下文件    6.1创建/etc/initab文件    Linux内核自举启动完成之后,最后将创建init进程并执行根文件系统中的/init或/initrc程序,该程序解析并执行/etc/inttab配置文件,在此文件中配置了init进程在系统启动要启动哪些应用程序。    [guozhihao@localhost rootfs]$ cd ~/gitee/fl2440...

2018-04-01 16:45:17 544

原创 玩转开发板--最简单的根文件系统树的制作-5

5.创建/var路径下文件    /var路径下会存放系统运行时的一些文件,我们在该路径下创建相应的符号链接到/tmp路径下。/var 文件系统包含系统一般运行时要改变的数据。通常这些数据所在的目录的大小是要经常变化或扩充的。原来 /var 目录中有些内容是在 /usr 中的,但为了保持 /usr 目录的相对稳定,就把那些需要经常改变的目录放到 /var 中了。每个系统是特定的,即不通过网络与...

2018-04-01 16:21:00 191

原创 玩转开发板--最简单的根文件系统树的制作-4

创建/dev路径下的设备节点    Linux下所有的东西都是文件,其中设备也是当作文件来处理。/dev路径下存放所有Linux的设备文件,我们需要使用root权限执行mknod命令在这里创建系统启动必须的设备节点,其他的设备节点将有mdev动态创建。    [guozhihao@localhost rootfs]$ cd ~/gitee/fl2440/linux/rootfs/   ...

2018-04-01 15:49:27 218

原创 玩转开发板--最简单的根文件系统树的制作-3

安装busybox    Linux系统在执行一条命令时,默认会到/bin、/sbin、/usr/bin、/usr/sbin这些路径下找,如果找不到则提示command not found,当然我们也可以通过PATH环境变量告诉系统其他命令存放的路径,现在根文件系统树下这些路径并没有Linux系统相关命令,这时我们就需要下载命令来满足我们的需求: BusyBox是一个集成了一百多个常用Linu...

2018-04-01 15:39:38 308

原创 玩转开发板--最简单的根文件系统树的制作-2

  安装动态库    Linux下所有的应用程序都离不开动态库,程序在运行时默认会在/lib路径下查找相关的动态库文件。如果动态文件不在该路径,可以通过修改LD_LIBRARY_PATH环境变量(可参考LP0)来指定其他需要加载的动态库路径。因为开发板上所有的程序都是使用交叉编译器编译的,所以我们需要将交叉编译器的动态库文件拷贝到根文件系统树的lib路径下:    操作路径:/home/g...

2018-04-01 15:11:33 225

原创 玩转开发板--最简单的根文件系统树的制作-1

烧录的对象:FL2440    FL2440开发板是飞凌公司使用三星ARM9 S3C2440 CPU做的一个ARM Linux学习开发板,该CPU是使用armv4t指令集的ARM920T核,工作主频最高在400MHZ。    使用的是SecureCRT来远程操作自己的虚拟机。    具体详细介绍请参考:https://blog.csdn.net/pipiavenger/article/...

2018-04-01 15:02:02 274

原创 玩转开发板--交叉编译器的使用

  一.交叉编译器简介    1.交叉编译器概念    在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器叫做交叉编译器,这个编译过程就叫交叉编译。简单的说,就是在一个平台上生成另一个平台上的可执行代码。     1.2GNU编译器工具链    GNU工具链中包括编译器(cc)、连接器(ld)、汇编器(as)以及调试器(gdb)等。  ...

2018-03-26 19:23:44 951

原创 玩转开发板--常见的tftp网络下载错误归纳以及注意事项

------------------------------------------------------------准备软件:tftpd32 并且打开下载地址:http://tftpd32.jounin.net/download/tftpd32.452.zip下载并解压开发板:Fl2440(arm系列)--------------------------------------...

2018-03-26 18:49:46 2918

原创 玩转开发板--diff和pitch命令的使用

diff和pitch命令解析    diff和patch是一对工具,使用这对工具可以获取更新文件与历史文件的差异,并将更新应用到历史文件上。在数学上说,diff就是对两个集合的差运算,patch就是对两个集合的和运算。在数学上我们知道:A-B = C,这样我们知道A、B、C中任意两个数就可以得出第三个数;因此这两个命令常用来制作补丁。假设u-boot-2010.09(A)是官方下载解压缩后...

2018-03-26 17:11:52 629

原创 玩转开发板--fl2440的详解补充

补充位置到:http://blog.csdn.net/PipiAvenger/article/details/79563996一.S3C2440内存映射     S3C2440对外引出了27根地址线ADDR0~ADDR26,它最多能够寻址128MB,而S3C2440的寻址空间可以达到1GB,这是由于S3C2440将1GB的地址空间分成了8个BANKS(Bank0~Bank7),其中每一个B...

2018-03-22 13:21:29 563

原创 玩转开发板--硬件基础和常见的通信协议

一.开发板的存储系统参考:http://blog.csdn.net/PipiAvenger/article/details/79563996二.开发板上的arm处理器注:     CPU(累加器)的要处理的数据是从cache中读取,而cache中的数据是从内存中读取。影响cpu处理速度的另一个因素是cache。cache速度(100MHz)接近CPU(400MHz)的速度。...

2018-03-22 13:08:22 5094 1

原创 玩转开发板--Linux系统移植至开发板fl2440实践过程

一.开发板介绍    CPU:S3C2440(SAMSUNG)、ARM920T、400MHz    Pone/mic:耳机和话筒    JTAG:可以通过外部插入直接控制CPU,因此在初始化内存时,起到重要作用。    ADC:采样A模拟,D数字,C转换。    EEPROM:电可擦可编程只读存储器(可存放MAC地址)。   LCD:电阻式屏幕。    CAMEAR...

2018-03-15 11:27:04 1699 1

原创 网络Socket--服务器端源代码解析

附送网络socket模型传送门http://blog.csdn.net/pipiavenger/article/details/79414863服务器端:(使用多线程来完成目标)    1.服务器端程序通过命令行参数指定服务器端的参数,并且服务器需要返回客户端的IP地址和端口;    2.服务器端验证客户端传过来的用户名和密码进行验证,如果出错将错误原因返回给客户端;    3.如...

2018-03-08 18:50:53 1789 1

原创 网络Socket--客户端的源代码解析

附上笔记之前的传送门:http://blog.csdn.net/PipiAvenger/article/details/79414863客户端:    1.客户端程序通过命令行参数指定服务器端的参数;    2.客户端程序在连接服务器时,发送自己的用户名和密码给服务器端;    2.如果用户名和密码出错则程序退出否则从标准输入中读入字符串,然后将该字符串发送给服务器端;    ...

2018-03-05 20:27:54 766 1

原创 Linux环境编程--网络通信socket编程笔记

一.网络通信模型     TCP/IP:Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。...

2018-03-01 17:15:01 474 1

转载 码云GIT和SVN使用说明

一.前言    1.版本和版本控制    版本控制(Revision control)是一种软件工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。它会记录程序各个模组的改动,并为每次改动编上序号,这样可以查看所有的修改历史记录。软件系统的版本号由3部分构成,即主版本号+次版本号+修改号,如Linux内核源码linux-4.2.6(主版本号为4,次版本号为2,...

2018-02-28 16:52:55 3478 1

原创 Linux环境编程--Makefile的使用

一.使用目的    一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。   在 Linux(unix )环境下使用GNU 的make工具能够比较容易的构建一个属...

2018-02-26 09:41:05 263 2

原创 初学APUE-book-3重点摘入

一.关于函数read的补充    1.读普通文件时,在读到要求字节数之前已到达了文件尾端。例如,诺在到达文件尾端之前有30个字节,而要求100个字节,则read返回30。下一次在调用read时,他将返回0.    2.当从终端设备读时,通常一次最多读一行。(可改变)    3.当从网络读时,网络中的缓冲机制可能照成返回值小于所要求读的字节数。    4.当从管道或FIFO读时,如诺管道包含的字节数...

2018-02-25 20:59:38 210 1

原创 Linux环境编程--文件描述符的使用以及常用来搭配的几个函数实例

一.文件描述符    对于内核而言,所有打开的文件、设备、网络socket都是通过文件描述符引用,文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,使用open或creat返回的文件描述符表示该文件,将其作为参数床给read或write。    应用程序运行的时候,系统将会为该进程默认打开三个文件描述符:    标准输入:ST...

2018-02-25 20:43:25 301 1

原创 Linux环境编程--静态库和动态库的制作、调用

动/静态库的制作:静态库:    1.对.c文件进行汇编处理    gcc -c file1.c     gcc -c file2.c    ...    2.ar -rcs libxxxx.a *.0 (将所有.c文件打包成一个静态库)动态库:    1.gcc -shared -fpic -o libxxxx.so *.c注:1.系统默认安装了动态库,静态需...

2018-02-24 16:33:42 174 1

原创 初学APUE-book-2重点摘入

一.Linux    是一种提供类似于UNIX的丰富编程环境的操作系统,在GUN公用许可证的指导下,Linux是免费使用的。Linux的普及是计算机产业的一道亮丽的风景线。Linux经常支持较新硬件的第一个操作系统。二.限制    UNIX系统实现定义了也很多幻数和常量,其中有很多已被硬编码到程序中,或用特定的技术确定。标准化是确保程序的可移植性:    以下两种类型的限制是必须的。    (1)...

2018-02-24 16:23:52 156 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除