自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MQTT(Mosquitto)的交叉编译和移植

关于MQTT(Mosquitto)的交叉编译和移植 源码下载地址:http://mosquitto.org/files/source/ mosquitto在运行的时候需要用到几个比较重要的动态库libmosquitto.so, libssl.so, libcrypto.so,其中libmosquit...

2019-09-06 17:35:36 2764 1

转载 Qt带进度条的启动界面

通过继承QSplashScreen类,得到CMySplashScreen类,然后在CMySplashScreen中定义QProgressBar变量,该变量以CMySplashScreen为父类,这样就实现了带进度条的启动界面。        进度条加入后,需要控制进度条的值,为了让进度条看起来更逼真,可以通过生成随机数的方式,把随机数当做进度条的值。此时,生成的随机数必须是从小到大排列的,要不

2018-02-02 17:30:02 734

转载 如何制作LINUX的patch文件及如何打patch

如何制作LINUX的patch文件及如何打patch对某个版本的Linux内核做了修改以后,如果希望发布出去给别人用,那么就需要制作针对此版本的patch文件。patch文件也叫补丁,就是一个文本文档,这个文档包含了在两个不同版本的源代码树之间的变化。补丁是通过diff应用程序来创建的。为了正确地打上一个补丁,你需要知道这个补丁是从哪个基础版本产生出来的以及这个补丁将要把目

2018-01-29 23:43:49 306

原创 解决Qt5.9.2 cannot find -lGL

在部署程序到ubuntu上的时候提示找不到库,解决方法为:you don't need to install anything. libGL is already installed with Ubuntu, you just need to soft link it. (works for ubuntu 14.x and 15.x)1.First locate the GL libr

2018-01-03 14:52:05 499

转载 uboot向kernel的传参机制——bootm与tags

最近阅读代码学习了uboot boot kernel的过程以及uboot如何传参给kernel,记录下来,与大家共享:U-boot版本:2014.4Kernel版本:3.4.55一 uboot 如何启动 kernel1 do_bootmuboot下使用bootm命令启动内核镜像文件uImage,uImage是在zImage头添加了64字节的镜像信息供uboot解析使用,

2017-11-16 09:31:26 786

转载 QT为QLabel添加Click事件

ClickedLabel.h[cpp] view plain copyprint?#ifndef CLICKEDLABEL_H_  #define CLICKEDLABEL_H_  #include   #include   class ClickedLabel : public QLabel  {      Q_OBJECT  signals:  

2017-10-16 15:32:37 582

转载 Qt带进度条的启动界面

通过继承QSplashScreen类,得到CMySplashScreen类,然后在CMySplashScreen中定义QProgressBar变量,该变量以CMySplashScreen为父类,这样就实现了带进度条的启动界面。        进度条加入后,需要控制进度条的值,为了让进度条看起来更逼真,可以通过生成随机数的方式,把随机数当做进度条的值。此时,生成的随机数必须是从小到大排列的,要不

2017-09-22 14:16:32 1632

转载 Linux framebuffer显示bmp图片

制器参数。比如图形硬件上实际的帧缓存空间的大小、能否硬件加速等信息。  应用程序中通常要用到struct fb_var_screeninfo的下面这几个字段:   xres、yres、bits_per_pixel,分别表示x轴的分辨率、y轴的分辨率以及每像素的颜色深度(颜色深度的单位为bit/pixel),其类型定义都是无符号32位整型数。#include #include #in

2017-09-22 14:15:25 995

转载 Linux framebuffer显示bmp图片

framebuffer简介     帧缓冲(framebuffer)是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。framebuffer是LCD对应的一中HAL(硬件抽象层),提供抽象的,统一的接口操作,用户不必关心硬件层是怎么实施的。这些都是由Framebuffer设备驱动来完成的。     帧缓冲设备对应的

2017-09-22 12:45:03 602

转载 Qt入门-控件颜色面板类QPalette

QPalette类提供了绘制QWidget控件时使用的颜色。    控件的颜色状态分三种:(1)Active,激活状态(2)Disabled,禁用状态(3)Inactive,未激活状态     控件在这三种不同的状态下具有不同的颜色值,QPalette类管理这三组颜色,它根据这三种状态分为三组颜色,每一组颜色都根据绘图角色的不同分类。系统在绘制控件时使用这些颜色,程序员可以

2017-09-11 16:31:03 754

转载 VMware虚拟机安装Ubuntu使用share folders共享windows目录的方法

第一步,安装VMware Tools恢复虚拟机ubuntu后,首先,点击 虚拟机——安装VMware Tools(Install VMware Tools),这时我们会在Ubuntu系统桌面上发现VMware Tools的光盘图标。双击这个文件图标后,会发现有两个文件,manifest.txt和 VMwareTools-8.4.5-324285.tar.gz,很OK,说明我们的VM

2017-09-02 22:47:42 526

转载 移植QT5.6到嵌入式开发板(史上最详细的QT移植教程)

目前网上的大多数 QT 移植教程还都停留在 qt4.8 版本,或者还有更老的 Qtopia ,但是目前 Qt 已经发展到最新的 5.7 版本了,我个人也已经使用了很长一段时间的 qt5.6 for windows ,本文就来介绍一下QT在嵌入式环境的搭建。  移植以到 JZ2440 为例,使用韦老大提供的 ubuntu9.10 虚拟机作为移植环境。当然,其它虚拟机也是可以的,我同样在 ubun

2017-08-27 13:38:54 513

原创 关于lib/asm-offsets.c:1:0: error: bad value (armv5) for -march= switch问题解决办法

关于lib/asm-offsets.c:1:0: error: bad value (armv5) for -march= switch解决办法            ti的am335x starter kit平台sdk中编译uboot的时候,出现这个问题,一直没有找到问题的点,百度说的是编译的时候工具链没有指定,但是重新指定工具链和架构之后,还是会出现这个问题,arm-linux-gnuea

2017-08-19 16:06:40 6610 5

转载 Linux内核文档翻译:Documentation/arm/Booting

启动 ARM Linux=================以下文档适用于 2.4.18-rmk6 及以上版本.为了启动ARM Linux,你需要一个引导装载程序(boot loader),它是一个在主内核启动前运行的一个小程序。引导装载程序需要初始化各种设备,并最终调用Linux内核,将信息传递给内核。从本质上讲,引导装载程序应提供(至少

2017-08-02 16:33:49 375

转载 Linux设备驱动模型概述

Linux设备驱动模型(一)-节能之初衷2.6内核增加了一个引人注目的新特性——统一设备模型(device model)。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,从而使得系统具有以下优点:(1)代码重复最小化。(2)提供诸如引用计数这样的统一机制。(3)可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线。(4)可以将系统

2017-08-02 16:32:47 491

转载 linux 用户空间与内核空间——高端内存详解

摘要:Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。用户空间的内存映射采用段页式,而内核空间有自己的规则;本文旨在探讨内核空间的地址映射。 Linux内核地址空间划分通常32位linu

2017-07-21 11:55:53 304

转载 Linux系统结构 详解

Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。 1.linux内核        内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和

2017-07-20 18:00:29 283

转载 I2C子系统分析

本文以s3c2440的I2C子系统为例, 分析其代码实现本人学习驱动不久, 如有瑕疵纰漏, 欢迎指教, 谢谢从硬件的角度看, I2C子系统由总线适配器和挂在总线上的设备组成因此, 很容易想到, Linux的I2C子系统至少要提供:    总线上设备的支持, 以及其驱动    总线适配器的支持, 以及其驱动1. S3C2440的I2C总线作为一个平台设

2017-06-06 10:59:07 590

原创 关于spi flash芯片m25p80驱动以及其简单的mtd驱动分析

项目中用到了spi flash芯片MX25L25635E,之前在uboot下简单分析了驱动代码,调试该flash擦除的bug,一直没有时间分析内核中关于该芯片的驱动,以下是对该芯片驱动的一个简单分析:1、先粘贴一些flash的理论部分:         MTD层为NOR FLASH和NAND FLASH设备提供统一接口。MTD将文件系统与底层FLASH存储器进行了隔离。 如

2017-05-03 16:08:52 5951

转载 Linux电源管理(3)_Generic PM之Reboot过程

1. 前言 在使用计算机的过程中,关机和重启是最先学会的两个操作。同样,这两个操作在Linux中也存在,称作shutdown和restart。这就是本文要描述的对象。 在Linux Kernel中,主流的shutdown和restart都是通过“reboot”系统调用(具体可参考kernel/sys.c)来实现的,这也是本文使用“Generic PM之Reboot过程”作为标题的原

2017-04-27 14:37:12 711

转载 linux 中copy软链接

linux 中copy一个软链接时,复制的是软链还是它链接的内容在linux 中copy一个软链接时,复制的是软链还是它链接的内容?当用cp命令copy一个软链接时,copy的是软链接所对应的内容,而不是它本身。    如: # echo "1234567890" > test.txt# ln -s test.txt test2.txt# cp te

2017-04-25 11:28:37 13103

转载 S5PV210的内存分配研究分析

S5PV210内存一般会使用SDRAM和DDR2 (DDR SDRAM),SDRAM的uboot启动网络已经有很多资料的,对于DDR2还有有很多疑惑,如果有错误的地方,请大家一定指出,醍醐灌顶,不胜感激。1、S5PV210的memory map(物理地址)如下图:左图是整个芯片的内存空间(物理地址),右图是iROM部分的内存空间(BL0的地址貌似不是物理地址==)   

2017-04-22 18:25:07 2292

转载 linux内核杂项设备驱动源码分析

  在Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。所有的miscdevice设备形成了一个链表,对设备访问时内核根据次设备号查找对应的miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。在内核中用struct 

2017-03-16 11:58:09 392

转载 Linux输入子系统

Linux输入子系统(Input Subsystem)        Linux 的输入子系统不仅支持鼠标、键盘等常规输入设备,而且还支持蜂鸣器、触摸屏等设备。本章将对 Linux 输入子系统进行详细的分析。一    前言                输入子系统又叫 input 子系统。其构建非常灵活,只需要调用一些简单

2017-03-08 18:45:46 242

转载 S5PV210 FIMC驱动和v4l2驱动框架学习

FIMC的驱动在内核中的位置在drivers/media/video/samsung/fimc目录下,其中包含的文件有如下所示:        fimc40_regs.c        fimc43_regs.c        fimc_capture.c        fimc_dev.c        fimc_output.c        fimc_over

2017-02-27 17:53:36 241

转载 linux内核启动地址的确定

内核编译链接过程是依靠vmlinux.lds文件,以arm为例vmlinux.lds文件位于kernel/arch/arm/vmlinux.lds,vmlinux-armv.lds的生成过程在kernel/arch/arm/Makefile中ifeq ($(CONFIG_CPU_32),y)PROCESSOR = armvTEXTADDR = 0xC000800

2017-02-27 15:38:09 5503

转载 驱动模块Makefile解析

先看一下代码ifeq ($(KERNELRELEASE),)        KERNELDIR ?= /home/Linux/linux-2.6.22.6        PWD := $(shell pwd)        modules:                $(MAKE) -C $(KERNELDIR) M=$(PWD) modules        

2017-02-27 14:54:26 177

转载 如何实例化i2c_client(四法)

一、在板文件进行client的实例化在内核的初始化中(例如在板文件中)定义设备的信息。这种操作的前提是内核编译的时候已经确定有哪些i2c设备和它们的地址,还要知道连接的总线的编号。比如在板文件/arch/arm/mach-XXX/board_XXX.c中可以用类似下面的代码来注册i2c设备的信息。1.  static structi2c_board_info __initdat

2017-02-20 12:01:53 605

转载 Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)

研究内核源码和内核运行原理的时候,很总要的一点是要了解内核的初始情况,也就是要了解内核启动过程。我在研究内核的内存管理的时候,想知道内核启动后的页表的放置,页表的初始化等信息,这促使我这次仔细地研究内核的启动代码。    CPU在bootloader的帮助下将内核载入到了内存中,并开始执行。当然,bootloader必须为zImage做好必要的准备: 1. CPU

2017-02-12 17:47:48 638

转载 Boot Loader启动过程分析

一、    Boot Loader的概念和功能 1、嵌入式Linux软件结构与分布在一般情况下嵌入式Linux系统中的软件主要分为以下及部分:(1)引导加载程序:其中包括内部ROM中的固化启动代码和Boot Loader两部分。而这个内部固化ROM是厂家在芯片生产时候固化的,作用基本上是引导Boot Loader。有的芯片比较复杂,比如Omap3,他在flash中没有代码的时候有许多启动方

2017-02-12 17:02:13 5656

转载 怎么把kernel用uboot引导?

要解决的问题:1. kernel虚拟地址怎么改?2. bootloader默认把他下载到了那里?3. 参数tag的地址怎么改 ,什么时候使用这个地址的?4. 自解压的地址怎么改?5. 从启动到linux开始运行,整个ram的布局的变换?6. 怎么把kernel-2.6.13用uboot引导?1. 虚拟地址怎么改?(运行时地址,自解压后kernel地址)生成vml

2017-02-11 18:54:22 646

原创 开发板X210V3S移植linux3.2内核

买了开发板一直想把uboot和kernel都换掉,开发板自带的kernel版本是2.6.35,现在更换成linux3.2.17,因为想使用设备树,移植linux3.0以上的版本可谓是一波三折,到现在还没有搞明白为什么有的版本一下子就能移植成功,而有的版本却始终卡死在Starting kernel ....处,百度过的方法都试过了,还是不行,所以暂时先移植一个可行的。网上也有很多关于移植的教程,其实

2017-02-10 16:31:27 1737 1

原创 关于flash分区打印信息jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985

uboot中的bootargs设置如下:bootargs=noinitrd console=ttyS0,115200n8 maxcpus=1mem=240Mmtdparts=S29GL:768K(boot),128K(env),15M(system),13M(rootfs),-(custfs);spi1.0:640k(uboot),320k(env),64k(mac),6M(system)

2017-02-09 15:58:07 7691 2

转载 bootm命令

制作Linux映像============使用uboot时,内核通常生成的文件"zImage"或"bzImage"是没用的。较新一些的内核原码会生成"uImage", 这个可以为uboot使用。"uImage"全用了一个工具"tools/mkimage"来封装压缩后的映像文件,在其头部添加一些信息以及crc32校验等。我们需要做如下几件事情:* 制作

2017-02-05 14:18:29 1390

原创 关于Your dtc is too old, please upgrade to dtc 1.4 or newer的解决方法

环境:ububtu12.04 64bit最近在编译uboot2016.07的时候一直出现Your dtc is too old, please upgrade to dtc 1.4 or newer,被这个问题困扰很久,一直没有解决,百度说是sudo apt-get update upgrade,然后sudo apt-get install device-tree-compiler ,试过无数

2017-01-10 19:49:36 8168

转载 博通SDK中关于I2C驱动的问题

近期调试I2C驱动,遇到不少问题,没及时记录,也没整理,先把刚解决的这个问题记录下。1、把I2C适配器驱动和各设备驱动的资源信息在board文件里注册;2、然后把各驱动添加到kernel中编译;3、编译出的kernel image在板子上跑,各驱动均正常。但在加载了broadcom交换芯片SDK的ko模块后,发现I2C的各设备都不能正常访问了。跟踪SDK

2017-01-04 09:37:27 1088

转载 uboot启动流程

一、uboot说明1、uboot要做的事情CPU初始刚上电的状态。需要小心的设置好很多状态,包括cpu状态、中断状态、MMU状态等等。其次,就是要根据硬件资源进行板级的初始化,代码重定向等等。最后,就是进入命令行状态,等待处理命令。在armv7架构的uboot,主要需要做如下事情arch级的初始化关闭中断,设置svc模式禁用MMU、TLB关键寄存器的设置,包括时

2016-12-21 23:52:41 3571 2

转载 u-boot-2016.07移植至S5PV210-单板配置

一、添加单板信息  1、   cp -r board/samsung/smdkc100 board/samsung/smdkv210    2、进入smdkv210下      cd board/samsung/smdkv210/      mv smdkc100.c smdkv210.c  3、修改Kconfig      if TARGET_SMDKV210        config SYS

2016-12-18 16:46:17 1373

转载 凭兴趣求职80%会失败,为什么

所谓兴趣听到一段旋律优美的音乐,会对小提琴发生兴趣;吃了别人做的板栗红烧肉,也想自己做做看;去摄影展看到美轮美奂的照片,就想马上买一部单反也到悬崖边上拍云卷云舒;路上见到踩着旱冰鞋刷街的人从身边呼啸而过,很可能心中一动打算明天就到广场练滑冰……当我们的眼耳鼻舌身意等感受到了某件事情带给我们新奇、快乐,我们就很容易对其产生兴趣。这个阶段的兴趣,停留在感官阶段,处在“想要”层面,只看到

2016-12-09 12:50:46 429

转载 RIB表与FIB表、ARP表与FDB表

1.RIB与FIB的区别:RIB:路由表FIB:转发信息表FIB表更多是出现在需要快速转发的路由器上,这种路由器上的路由表条目通常都达成千上万条,如果按照传统的检索路由表进行转发的方式,其转发效率很低,FIB表作为路由表的一种精简形式出现,通常只记录常用的表项。当需要选路时,先检索FIB表,如果找不到再检索路由表。在大部分路由器中,RIB表现为路由表的形式, FIB则表

2016-12-09 11:08:12 928

空空如也

空空如也

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

TA关注的人

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