自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CJ_Kano的专栏

____________________________________________不断练习再练习,慢慢的拥有自信和力量

  • 博客(66)
  • 资源 (2)
  • 收藏
  • 关注

原创 使用cmake-tools 在vscode 中编译CMakeList项目

1、cmake documentationhttps://cmake.org/cmake/help/latest/index.html2、Creating and using shared libraries with different compilers on different operating systemshttp://gernotklingler.com/blog/...

2019-11-03 20:41:18 2568

原创 【SylixOS】DRM中的Plane概念

1. 简介 11.1 Plane的历史 11.2 Plane的功能 11.3 Plane的类型 11.4 Plane的测试用例 2    简介在DRM(Direct Rendering Manager)中,学习了drmModePageFlip和drmModeSetCrtc的用法。但是这两个接口都只能全屏显示Framebuffer的内容,如何才能在屏幕上只显示fra...

2019-01-21 14:37:13 816

原创 【SylixOS】Qt 基于FrameBuffer渲染界面

1.简介Qt是目前一款比较主流的人机交互界面库。它有很强的跨平台能力,可移植性好,被广泛应用在PC端以及嵌入式领域。Qt可大致分为两部分:QtGui和QtCore,QtGui提供开发人员一套完整的开发控件,可以快速开发客户端界面;QtCore则负责底层渲染以及事件驱动等。而本章节主要介绍的是Qt的渲染机制,在Qt5中将底层渲染和窗口管理大致分为:SylixOSFB、LinuxFB、KMS、XC...

2018-12-24 18:56:12 3086

原创 【SylixOS】QT之绘图引擎QPainterEngine

简介在QT中所有的绘图操作都是通过QPainter来完成的,甚至QT自身所有控件窗口的绘制都是通过QPainter绘制显示。另外QPainterDevice为作为绘图设备存在。其实最后所有的操作都是通过QT自身的QPainterEngine来实现一些的绘制渲染。绘制流程 QPainter提供绘制接口 对于QPainter来说,内部有一个状态堆栈,任何时候都可以通过调用 save()...

2018-10-23 15:29:22 833

原创 【SylixOS】QT-QWS流程介绍

QWS简介QWS(QT Windows System)是QT自行开发的窗口系统,体系结构类似X Windows的C/S结构。QWS Server在物理设备上显示,QWS Client实现界面,两者通过socket进行彼此的通讯。在很多嵌入式系统里,QT程序基本上都是用QWS来实现,这样保证程序的可移植性。QWSServer服务端QT程序没有严格区分服务端程序和客户端程序,通知指定-plat...

2018-09-26 11:19:08 905

原创 【SylixOS】QT程序启动加载流程简介(一)

QT应用程序启动加载流程简介 QWS与QPA启动客户端程序区别 QWS(Qt Window System)介绍 QWS(Qt Windows System)是QT自行开发的窗口系统,体系结构类似X Windows的C/S结构。QWS Server在物理设备上显示,QWS Client实现界面,两者通过socket进行彼此的通讯。在很多嵌入式系统里,QT程序基本上都是用QWS来实...

2018-08-21 10:42:12 1274

转载 【编程语言】const限定词的用法

面向对象是C++的重要特性.但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重const1. 限定符声明变量只能被读   const int i=5;   int j=0;   ...   i=j;   //非法,导致编译错误   j=i;   //合法2. 必须初始化 

2015-02-27 22:04:14 676

原创 【UNIX】内核对内核空间内存的管理以及对用户进程的堆内存分布

常用的内核内存分配函数        1)_get_free_pages是最原始的内存分配方式,至二级从伙伴系统中获取原始页框,返回值为第一个页框的起始地址。_get_free_pages在实现上只是封装了alloc_pages函数,而alloc_pages分配的长度为1        2)Kmem_cache_alloc是基于slab分配器的一种内存分配方式,适用于反复分配释放同

2015-01-10 08:21:12 981

原创 【UNIX】内核对进程的调度机制

(调度器)           对于一般进程,CPU的使用时间都是系统平均分配给每一个进程的,因此这种公平分享都从进程的角度出发的。 1) 调度时机:什么情况下,什么时候进行调度2) 调度的策略:根据什么准则选取下一个进程3) 调度方式:是“可剥夺”还是“不可剥夺”,当正在运行的进程并不自愿放弃对从CPU 的使用权时,是否强制性的暂时剥夺其使用权,停止其运行而给其他进程一个机会

2015-01-10 08:13:53 1058

原创 【编程语言】进程中栈空间的参数返回值以及局部变量的分布

在进程中对于局部变量是怎么分配的,以及函数是怎么调用的其实也就是讲解栈区的具体使用过程。( 下面代码图摘要于网络)      首先,我们要知道,栈中存放的是一个个被调函数所对应的堆栈帧,当函数fun1被调用,则fun1的堆栈帧入栈,fun1返回时,fun1的堆栈帧出栈。什么是堆栈帧呢,堆栈帧其实就是保存被调函数返回时下一条执行指令的指针、主调函数的堆栈帧的指针、主调函数传递给被调函数的

2015-01-04 22:49:54 1594

原创 【UNIX】从一个可执行文件的生成到进程在内存中分布 (下)/进程的内存分布

从一个可执行文件的生成到进程在内存中分布 (下)                                                                              进程的内存分布

2015-01-04 00:05:00 941

原创 【UNIX】从一个可执行文件的生成到进程在内存中分布 (中)/文件到进程的转变

从一个可执行文件的生成到进程在内存中分布 (中)                                                                            文件到进程的跨越

2015-01-03 23:33:31 1770

原创 【UNIX】从一个可执行文件的生成到进程在内存中分布 (上)/可执行文件的生成

一个源程序要生成可执行文件,需要通过编译器来实现,而编译器所起的作用就是把程序员编写的高级语言翻译成机器能读懂的低级语言(二进制代码),这里编译器起到翻译的作用。在Linux操作系统中采用的是GCC交叉编译工具。 虽然说GCC是个编译器,但是使用GCC从一个C语言程序生成可执行文件不仅仅只是编译过程,而是要经过四个相互关联的步骤:预处理(也称预编译,preprocessing)、编译(co

2015-01-03 00:35:56 947

原创 【编程语言】变量的定义以及与extern声明的区别

变量的定义与声明的区别       首先,变量的定义一定是发生在变量声明(extern)之前,变量的声明可以有多个,但是变量的定义只有一种,变量的声明影响变量的引用和作用域,而变量的定义则只是单方面的创建变量以及初始化赋值等,若变量再定义时没有初始化,则会在文件执行编译的时候随机赋值1)变量在定义时分配内存空间,同时也可能进行赋初值2)变量在声明时不会分配内存空间,变量的声明只是声

2015-01-02 19:22:25 1396

原创 【编程语言】变量的存储时期/作用域以及static/extern的用法

存储类:              存储时期       链接         内存管理 对于一个变量(不同的存储类型)可以通过存储时期,链接属性,以及相应的作用域来描述它。存储时期就是变量在内存中的保留时间,变量的作用域和链接在一起表明程序的哪些部分可以通过变量名来使用该变量。于是就有了不通过的存储时期,链接属性,以及作用域的组合 【1】存储时期(变量的生命期,表示存取一

2015-01-01 23:08:32 910

原创 【编程语言】诚迈试题二

1. linux内核内存分配方式 Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间 2. new/delete和malloc/free的区别 (1)操作对象有所不同。 malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。对于非内部数据类的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动

2014-12-31 23:54:43 938

原创 【系统移植】U_BOOT移植

U-BOOT移植                       Bootloader引导启动 0x0000_0000 0x0000_8000 32KB IROM0x0002_0000 0x0003_8000 96KB IRAM0x0003_4000 0x0003_8000 16KB BL1 The boot loader is divided into t

2014-12-31 23:42:43 639

原创 从普通的函数调用到操作系统内核空间的访问

从普通的函数调用到操作系统内核空间的访问 首先通过了解认识函数的原理来体会函数的调用 1)函数首先什么是函数,函数是用于完成特定任务的程序代码自包含单元(这里的自包含单元听着可能不懂,其实就是代码段{}花括号里面的每条代码,以分号结尾的集合,它们是为了完成某种特定的功能而去编写的程序)那么在为什么要使用函数,一般来说,函数的使用可以省略代码的重复编写,这里就涉及到函数的调用

2014-12-29 00:20:56 1015

原创 【Linux界面】配置VI颜色,秀出代码世界的情趣

作为一个Linux敲代码的人来说长期要与vi界面打交道,对着枯燥的代码,而且还没有一点颜色可言,除了白色还是白色,背景图片也是经典的紫色,多乏味,我们敲代码的也可以也有自己的生活情趣,不管是一个界面,我们也要设计出自己的理想图形,这样才可以更好的舒服的去看代码敲代码,变出牛叉的程序来【1】当我们打开一个vi界面时可以通过点击编辑的配置文件选项来设置自己的个性,下面将通过一个个的图形界面

2014-12-27 11:31:32 2980

原创 ARM平台环境搭建与交叉编译的实现

通过启动的打断机制可以使得arm平台在没有操作系统的情况下的驱动加载,直接通过GPIO和一些特定的IO引脚与片内外设的控制器或者直接挂载在系统的数据总线和地址总线上,当我们通过eclipse编译后生成的bin文件通过串口终端下载到内存地址的0x20008000处,此处的0x20008000是u-boot引导内核启动的起始地址,所以当我们把编译好的bin文件下载到此处,之后再在此处运行,从而可以驱动

2014-12-26 08:36:56 781

原创 【编程语言】诚迈试题一

诚迈试题1.OSI七层模型,每层具体包含哪些协议? 第一层:物理层()第二层:数据链路层(物理寻址,同时将原始比特流转变成逻辑传输线路)有MPLS多协议标签交换协议 XTP压缩传输协议 DCAP数据转接客户访问协议 ;隧道协议和地址解析协议第三层:网络层(控制子网的运行,如逻辑编址,分组传输,路由的选择)有IP/IPV6 安全协议和路由协议第四层:传输层(接收上一层的数据,

2014-12-24 21:13:53 1344

原创 【编程语言】品诺试题

1)编程:从键盘输入一个大写字母,要求改用小写字母输出。#include#include#define MAXLEN 10int main (){ char buf[MAXLEN]; fgets(buf,MAXLEN,stdin); buf[strlen(buf) - 1] = '\0'; puts(buf); //输入大写字母,输出小写

2014-12-21 22:12:03 681

原创 【汇编语言】Arm处理器之中断处理

Arm处理器之 中断处理1)在arm处理器中有8种工作模式(及CPU处理不同任务的模式),一般有5中异常模式,而在这5中模式中有三种中断机制,分别是FIQ模式(高优先级中断模式);IRQ模式(低优先级中断模式);还有一种就是SVC模式(当复位或者软中断(SWI)指令执行时产生的模式) 2)首先了解什么是中断机制在裸机arm中,SOC对硬件中断的支持(中断控制器),那么中断是

2014-12-16 23:49:57 3402

原创 【汇编指令】arm指令集之但寄存器数据load/store (加载存储)

数据的传送:LDR              STR                   .WORDLDRB            STRB              .BYTELDRH             STRH            .HALFWORD  LDR 和STR        加载/存储字和无符号字节指令。使用单一数据传送指令(STR 和LD

2014-12-14 14:28:54 4368

原创 【汇编指令】ARM指令集之PSR传送指令

ARM指令集提供了两条指令,可直接控制程序状态寄存器(PSR,Program State Register)。MRS指令用于把CPSR或SPSR的值传送到一个寄存器;MSR与之相反,把一个寄存器的内容传送到CPSR或SPSR。这两条指令结合,可用于对CPSR和SPSR进行读/写操作。 cpsr_c代表的是这32位中的低8位,也就是控制位CPSR有4个8位区域:标志域(F)、状态

2014-12-14 13:11:38 2106

原创 【汇编指令】ARM指令集之寄存器及32位概述

1)ARM处理器有37+3个32位寄存器:其中有32个通用寄存器,只有一个PC指针寄存器,一般习惯用R15来指向正在取指的指令,而不是正在执行的指令。(这里涉及到arm处理器的流水线操作流程,下面在介绍),七个状态寄存器:但是只有一个CPSR寄存器(用来表示当前程序状态寄存器),6个SPSR寄存器(用来保存备份当前程序状态的异常数据)。处理器在工作时有8种不同的工作模式,对应的每一种处理器

2014-12-14 13:08:18 2642

原创 【汇编指令】数据处理指令之逻辑指令

逻辑指令集有:AND/ORR/EOR/BIC1)与逻辑指令一般用于置零某位:ANDANDLogical AND operation.Syntax AND{cond}{S}  Rd, Rn, Op2Description Load Rd with logical AND of Rn with Op2. Rd := Rn AND Op

2014-12-09 20:37:47 1455

原创 【汇编指令】数据处理指令之算术指令集

ARM指令集:其中包括数据处理指令集1)算术指令(ADD,ADC,SUB,SBC , RSB, RSC )①加法指令:ADD,ADDS其中带S的表示可以更新标志位ADD/ADDSAdd values and store result to register.Syntax ADD{cond}{S}  Rd, Rn, Op2Descr

2014-12-09 19:13:43 1150

原创 【编程语言】fgets以及strncmp和strcmp的用法和区别

1)对于fgets()函数在打开一个文件时,用fgets函数去读取文件的每一行,fgets()函数会系统默认从上次读取的位置开始读取,也可以设置它的指针偏移量来控制每次要读取的哪一行。一般对于要读取一个文件的制定行可以通过判断要读取的字符串,就可以读取到你要取的那一行。示例代码如下:#include#include#includeint main(){ FI

2014-12-07 20:09:37 1524

原创 【UNIX】网络编程之在线词典编程初稿<不稳定>

服务器端:[email protected]:snippets/545029.git客户端:[email protected]:snippets/545031.git

2014-12-07 16:40:22 948

原创 【UNIX】网络编程/多路复用IO服务器编码

服务器端:#include#include#include#include#include#include#include#include#define MAXLEN 100typedef struct sockaddr SA;int main (){ int nr; int listenfd,connfd,maxfd,i,nby

2014-12-04 08:49:21 697

原创 【UNIX】认识iner-net网际网以及网络编程

INTER-NET就是在网络之间的传输共享资源,它也就是跨计算机的传输,那么这种传输需要有什么样的约束,才能确保在网络之间传输,于是就有了网络传输协议的概念。只要大家遵循这种约定,抽象的理解也就是统一了接口的的含义,只要使用者遵循了这种约定,也就可以像之前一个计算机中两个进程之间的传输信息共享资源。网络的特点体现了网络进程过程中的分层特点,每一层约定特定的协议进行传输,网络的体系结构是

2014-12-03 16:43:15 790

原创 【UNIX】怎么将buf和fgets运用在文件IO中open函数中

open函数打开创建文件一般有几种方式:1)第一种情况下是通过指定路径:open =("/tmp/text..c",O_RDWR|O_CREAT|O_APPEND,0666);这样就会在/TMP文件目录下就会自动创建了text.c了文件2)通过int mian (int argc,char *argv[])在shell终端输入命令,指定文件,会在缺省情况下自动创建不要自定文

2014-12-03 11:44:12 791

原创 【UNIX】什么是IPC对象以及共享内存

sys V 的IPC 对象:对于内核中创建的文件对象,就是文件标识符(它引用了文件对象的全部信息)在进程中文件描述符一般使用当前最小可用值。对于IPC标识符返回的是索引的整数值,它是全局变量的流水号,在系统中唯一分配的,若果在创建的IPC对象没有关闭,他会全局存在,只有在系统关闭的时候才关闭,这样会造成内存空间的资源被占用。

2014-12-01 23:34:42 737

原创 【UNIX】什么是进程间FIFO通信以及信号通信

上篇中的无名管道通信是父子进程之间的通信,限定了进程之间的通信,从而就有了有名管道,它可以使不同进程之间进行通信,有名管道可以通过指定路径名来指出,兵长文件系统中可见。进程通过文件IO来操作有名管道,有名管道遵从先进先出的原则,但是不支持lseek函数。1)int mkfifo(const char *pthname,mode_t mode)创建有名管道,2)在内核中创建对象,但没有打开读

2014-12-01 20:58:10 643

原创 【UNIX】进程间通信

Linux继承了AT&T和BSD以及早期的进程间的通信一般常用的通信方式有:1)传统的通信方式:无名管道,有名管道和信号。2)对于SYS 5 的进程间通信采用了共享内存,消息队列和信号灯的形式。3)BSD,对于一般网络间的通信采用来套接字的方式实现。1)无名管道的机制以及创建对于无名管道只是用于父子进程之间的通信,采用的是半双工的方式读写操作的,这里内核系统

2014-11-30 23:08:32 533

原创 【UNIX】通过线程的同步和互斥完成的AB循环

/****************************mutex**********************/#include#include#include #include#include #define _LOCK_pthread_mutex_t mutex;void *t1(void *arg){ int i; pthread

2014-11-30 23:06:10 438

原创 【UNIX】什么是线程的同步和互斥

1)线程的同步指的是在一个进程中线程之间按照约定同步完成一个事件。由信号量来决定线程是该运行还是阻塞。线程间的同步依靠P/V操作来完成,其中信号量是一个受保护的量,只能通过三种操作来访问:初始化,P操作(申请资源,此时P下面的信号量是处于等待状态,只有在V操作完成后,才会执行,所以P操作一般使用wait函数)和V操作(释放资源,只有V之前的指令执行完,才可以执行下面的指令,所以使用post函数

2014-11-30 22:54:45 814

原创 【UNIX】什么是线程

当一个程序以进程的形式在内存中执行的时候,每个进程的空间地址是私有的,因此在进程间的上下文切换是,系统消耗比较大,为了提高系统的性能,许多操作系统引入了轻量级的进程概念,被称为线程。在一个进程中创建的线程地址空间是共享的,在Linux中同样用task_struct 来描述线程,线程和进程都统一参与调度。1)一个进程中的多线程共享了以下资源:可执行命令静态数据进程中打开的

2014-11-30 19:21:29 584

原创 【UINX】什么是守护进程

守护进程通常也称为daemon进程,它是Linux的后台服务进程,一般具有以下几个特点:1)它是一个生存周期较长的进程,通常独立于控制终端并且周期性额执行某个任务或等待某些发生事件。2)守护进程通常在系统启动的时候就开始运行,在系统关闭时才终止。3)守护进程大多数都是服务进程,在后台运行。编写守护进程1:创建一个进程,父进程退出,此时子进程就成为了守护进程2:脱离终

2014-11-30 14:41:25 535

深入理解计算机系统

深入理解计算机系统

2014-11-22

冷热轧精细计量系统,包括表格的导入导出,各类控件使用

是钢铁企业能源数据的计量,包括各类控件基本使用方法。

2014-11-17

空空如也

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

TA关注的人

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