自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Qt 窗口程序实例演示

Qt 是一个C++框架,功能十分强大,具有很多功能复杂多样的类,而且还有完善的文档说明,各种程序范例。本文《Linux窗口程序设计——Qt4精彩实例分析》随书源码实例加以说明。所有源码均在windows10 + qtcreator-3.3.0+Qt-4.8.6 + MinGW 3.4.2下编译成功:书中所有的例子均在上图之中,现选择其中几个演示其界面:(一)2_standarddialo...

2019-06-09 13:35:13 1171

原创 使用Qt5.12编译qtopcua源码过程以及自带例子运行

Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。OPC UA(Unified Architecture,统一架构...

2019-04-23 18:31:23 8048 4

原创 uboot设置nfs参数——linux kernel使用nfs方式加载根文件系统rootfs(六)

最近一段时间研究了关于linux kernel使用nfs方式加载根文件系统rootfs,这种方式的可以在进行调试阶段不至于每次进行擦除、烧录步骤,在根文件系统比较大的情况可以节约时间。当然,研究这个最主要的原因还是想了解nfs功能的具体应用。首先简要描述一下kernel使用nfs方式加载根文件系统rootfs前提条件:(1)在宿主机(PC)上配置nfs服务器关于在linux环境下配置自己的n...

2019-04-12 20:54:33 6422

原创 uboot编译 uboot-spl 过程(五)

最开始编译uboot时,使用如下命令:make O=am3517_evm CROSS_COMPILE=arm-arago-linux-gnueabi- am3517_evm此时生成的文件被称为uboot第二阶段的代码,本节讲解如何编译uboot第一阶段(SPL)。先来理解SOC的启动流程,针对嵌入式设备,一般上电时刻启动分为三个阶段:BootROM中的固化程序–>> uboot...

2019-04-02 00:15:51 2156

原创 uboot自有命令功能函数实现细节(四)

uboot启动之后可以响应键盘输入,执行自带命令,完成各种功能,文本主要围绕uboot自有命令实现细节。

2019-03-25 13:16:57 608

原创 uboot源码分析--_start以及C语言函数入口(三)

一个可执行代码的入口可以通过链接文件(后缀.lds),获知可执行代码的入口就可以找到整个程序的起始代码。uboot中的make会按相应的硬件平台配置调用u-boot.lds(由于有很多u-boot.lds,至于调用的是哪一个可以直接看编译过程的输出信息,还有就是直接在生成所有目标文件目的录下去寻找[make O=目标目录路径]),现截取部分内容如下:整个程序的入口取决于连接脚本中ENTRY声...

2019-03-24 11:34:22 3149

原创 uboot源码中ELF文件u-boot的生成细节(二)

上节从整体上了解了uboot的编译过程,接下来关注ELF文件u-boot的生成细节部分。

2019-03-23 14:21:34 3245

原创 uboot源码编译过程分析(一)

uboot(全称 Universal Boot Loader),一般用来引导启动linux内核。uboot是一个开源项目,其源码目录、编译形式与Linux内核很相似。这里简略分析一下uboot的编译过程。先下载源码:http://ftp.denx.de/pub/u-boot/小编下载 u-boot-2011.09.tar.bz2是因为曾经使用过相关的定制版本(针对具体的开发板),并且研究过...

2019-03-22 21:11:58 3536

原创 FreeNOS中物理内存与虚拟内存的初始化过程(七)

在跳转到kmain函数之前已经开启了分页机制,一个操作系统需要建立堆栈以及对内存进行管理,以下部分分析相关函数。

2019-03-21 18:49:48 883

原创 FreeNOS中C++源码部分相关类构造函数以及方法函数的初始化过程(六)

上节分析到从汇编代码正式跳转到C++代码,即kerne/Main.cpp中的kmain函数,接下来分析相关类构造函数以及方法函数的初始化过程。

2019-03-16 11:47:46 874

原创 FreeNOS中的boot.S中全局描述表GDT、中断描述符表IDT以及分页机制的分析(五)

先了解一下概念性的东西(来源于百度百科),后面结合源码分析。一、CPU工作方式,实时模式与保护模式在80286以前,CPU只有实时模式,地址总线有20位,而内存地址是16位,也就是最多能够访问 2^20 =1M 的内存空间。在80286及以后,内存地址改为16位或32位,至少可以访问到 2^32=4G 的内存空间。但为了保证后续的CPU能够运行旧的CPU,只能保持向下兼容。因此,80286及...

2019-03-13 22:48:43 934

原创 FreeNOS-kernel目录下boot.S、链接脚本kernel.ld文件分析(四)

上节提到过引导程序在将控制权交给内核时,相关寄存器状态已确定,并且程序入口地址为boot.S文件中的_start,下个面就来看看boot.S文件。

2019-03-11 10:59:11 1186

原创 关于FreeNOS使用grub引导启动遵守Multiboot规范的内核过程分析(三)

FreeNOS使用grub引导启动内核镜像,并且遵守Grub Multiboot规范,此文具体结合FreeNOS分析grub启动过程以及简要介绍Grub Multiboot规范。

2019-03-09 13:03:12 965

原创 FreeNOS自动化构建工具Scons生成ISO过程(二)

FreeNOS使用自动化构建工具Scons来编译源码以及制作生成启动镜像,Scons的作用与make类似。

2019-03-08 13:00:17 1256

原创 在ubuntu上编译运行FreeNOS(一)

网上关于FreeNOS编译运行讲解资料不全,而且大多或多或少存在错误,此处给出实际编译运行步骤以及避免错误操作,为学习FreeNOS搭建一个良好的学习平台。

2019-03-08 10:44:44 2163 1

原创 libevent源码分析(六)

libevent-1.4/sample/singnal-test.c接下来看看 event_base_dispatch(base);这个函数是整个Reactor的核心,是一个loop.函数定义:int event_base_dispatch(struct event_base *event_base){ return (event_base_loop(event_base, 0));...

2018-09-24 12:35:02 286

原创 libevent源码分析(五)

libevent-1.4/sample/signal-test.cevent_add(&signal_int, NULL);将 struct event signal_int添加到struct event_base* base,即注册号监听事件以及回调后添加到Reactor上。int event_add(struct event *ev, const struct timeval *...

2018-09-24 11:10:51 162

原创 使用jsoncpp解析json数据(三)

知道了怎么处理字符串形式的json数据,下面看看将json数据写入文本以及从文本中读入进行处理。源码地址:https://github.com/jeremy505/jasoncpp-examples/blob/master/write_to_file.cpphttps://github.com/jeremy505/jasoncpp-examples/blob/master/read_from...

2018-09-24 09:09:07 9047 1

原创 使用jsoncpp解析json数据(二)

先来看看string_parse.cpp,使用json数据格式创建了个人信息,包括索引、姓名,年龄,居住地以及电话号码,如下所示:这段json数据在string_parse.cpp是使用的字符串表示的,然后解析,可以获取对应的键值对,代码如下:(string_parse.cpp)#include <iostream>#include "./json/json.h"using n...

2018-09-24 08:38:47 3416

原创 使用jsoncpp解析json数据(一)

下面谈谈json数据的解析处理方法。Json数据是跨平台的,在网络数据传输流程中,json是以文本,即字符串的形式传递的,各种语言对字符串的处理比较统一。比较出名的一款json库是基于C++的jsoncpp,功能很强大,关于jsoncpp怎样解析json数据涉及到编译原理方面的知识,有一定的难度,本文主要是围绕jsoncpp在linux平台上的使用。先去下载jsoncpp的源码:https:...

2018-09-23 09:50:48 1998

原创 libevent源码分析(四)

sample/signal-test.c/* Initalize one event */event_set(&signal_int, SIGINT, EV_SIGNAL|EV_PERSIST, signal_cb,&signal_int);event_base_set(base, &signal_int);以上函数为信号SIGINT注册是信号事件以及回调函数,然...

2018-09-22 09:26:21 176

原创 libevent源码分析(三)

在libevent(二)中最后我提到了socketpair,不同于系统调用socketpair,libevent自己使用本地通信实例(AF_UNIX)实现了socketpair的功能,我不知道二者实现方式是不是一直,但原理上应该是一致的。我把evsignal_init函数中的evutil_socketpair提取出来并做测试,代码如下:...

2018-09-21 22:08:33 224

原创 linux下多线程通信(一)

在linux下进行多线程编程,肯定会涉及到线程通信问题,本文主要分析pipe,即管道在多线之间通信实现。#include<unistd.h>int pipe(int filedes[2]);返回值:成功,返回0,否则返回-1。参数数组包含pipe使用的两个文件的描述符。fd[0]:读管道,fd[1]:写管道两个线程之间通信简单实现,单向pipe_1.c在这里插入代码片...

2018-09-21 20:11:57 12037 1

原创 linux下程序启动后后台运行实现

关于linux下的程序运行很简单,将源码编译成二进制(假设为proram)文件后直接在命令行运行即可,roor#./program如果需要后台运行,即不占用当前终端,这在嵌入式linux显得十分有必要,因为一般嵌入式linux只有一个终端,通过rs232连接到电脑上,使用...

2018-09-21 16:14:08 4656

原创 libeevent 源码分析(一)

目前libevent 源码版本已经在2.1版本以上,相对而言,1.4版本容易理解,且2.1版本变动不少,所以本着学习的目的,先阅读1.4版本。先从libevent目录sampel下signal-test.c开始入手,主体代码如下:int called = 0;static void signal_cb(int fd, short event, void *arg){ struct eve...

2018-09-21 15:10:09 261

原创 libevent源码分析(二)

libevet——Reactor初始化,先来看看event_base_new的定义,先关注主线代码,后续研究细节:struct event_base *event_base_new(void){ int i; struct event_base *base; if ((base = calloc(1, sizeof(struct event_base))) == NULL) even...

2018-09-21 14:46:47 226

原创 hash表--c语言 字符串键值配对——(key, value)

c语言键值配对——(key, value)看一个C++项目时,其中解析配置文的部分引发了我的思考。 配置文件问普通字符文件,内容都是类似 如下: ipaddr=127.0.0.1 port=888 logfile=log C++对此配置文件解析字符,按每次处理一行,以”=” 作为分隔符将每行分成两个字符串作为(key,value)插入map 变量,举个例子 以ipaddr=127...

2018-09-15 19:12:27 9134

原创 C++ 访问MySql 接口封装

一般操作mysql可以直接在使用sql语句来建立数据库,修改、查询以及删除等。如果在程序里想要访问数据库又该如何操作呢?下文便是一个简单的例子,能够完成基本的操作,可在此基础上扩充,这个例子也是我将一个开源项目对mysql的部分操作提取出来,加以修改而来。 环境要求linux 平台支持 C++11 安装 mysql 、mysql-devel以及mysqlclient。 源码地址 https:...

2018-09-14 10:30:33 6727

原创 关于libevent-book-examples_01----ROT13 server by using select() 一处bug分析及修正

刚刚学习libevent这个开源网络库时,在研究libevent-book examples_01 目录下有一例子,使用select()实现rto13 server. 这个select()的基本框架在并发连接非常少时可以用来做一个简易服务器,可以在此基础上进行相应修改即可。 此server的功能基本上就是一个 echo server. 我比较关注的是select...

2018-09-11 23:52:26 186

原创 关于用户态 TCP/IP 协议栈的一个项目研究

——TCP/IP协议栈开源项目level-ip在ubuntu12.04运行 很久之前的工作中研究过arm 平台下的linux 网络驱动,结合外围电路以及网络芯片的datasheet理清了一个网络驱动的架构以及实现接口,至于到达网卡的数据包如何传递给linux应用层也有一点涉猎,阅读过 《追踪linux TCP/IP 代码运行 ——基于2.6内核》 秦建著,但关于linux 内核态...

2018-09-11 21:28:03 1984

原创 使用 ATL/WTL 创建简单 music_UI

一直以来 对MFC的印象是臃肿,虽然没有深入进行过MFC编程,这应该是表面上很肤浅的认识吧,不管怎样,意外之中接触到 ATL/WTL之后,看过几个开源项目,发现这玩意能把界面写的非常好看,所以就试着做了简易仿网易云 UI界面,功能很简陋,也借鉴不少网上的项目源码,没有完全选择从头造轮子。先上截图看看:![主界面,只做了加载本地音乐播放](https://img-blog.csdn.net/20...

2018-09-09 16:46:16 350

空空如也

空空如也

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

TA关注的人

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