自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jqh_111的专栏

just be more better. https://github.com/hello-os

  • 博客(33)
  • 资源 (3)
  • 收藏
  • 关注

原创 什么是微内核?

如题,什么是微内核操作系统呢? 那,什么又是操作系统呢? 其实,网上有很多对操作系统的定义,写得非常详细,本文无需重复造轮子,同学们可以上网了解其详细定义。小编在这里以自己的理解,简单白话介绍一下。操作系统从软件构成来说,操作是一种软件程序,主要由调度器、进程/线程、IO设备驱动等组成;从使用层面来说,操作系统管理系统中所有的硬件资源,并为用户程序提供相应的服务,常见的如Windows,linux等。用户程序是没有权限直接访问系统中的各种硬件资源的。因为如果放开...

2021-08-02 22:48:42 738

原创 fuchsia boot-shim工作内容分析

文章主要分析boot-shim.c文件的工作原理流程分析,主要包括对zbi文件的追加和剥离等内容。起始大多数同学是不明白boot-shim存在的意义。这里有必要先给大家讲解一下zbi文件。zbi文件zbi,full name:zircon boot image。由zbi容器头和启动条目组成。启动条目又由zbi头和payload负载内容组成。一个普通的zbi文件组成如下:(提示:zbi头和负载payload是地址连续的)zbi头结构体信息如下(可以看到该结构体是8字节对齐的,它自身大小

2020-07-13 20:57:56 598

原创 Operating Performance Points(性能操作点)

文章标题翻译可能不是很准确,但是还是比较靠近本质意思。opp全名Operating Performance Points。可参考linux官方文档:linux/Documentation/power/opp.txt。1、介绍1.1、什么是性能操作点?现如今功能复杂的soc是由很多子功能模块协作组成的。在执行各种用例的操作系统中,在SOC中,并不是所有的模块都需要一直工作在最高频率。为了解决这中场景,SOC中的子模块被分组到不同的域中。允许一些域运行在低电压低频率环境下,与此同时,另一...

2020-06-21 20:40:29 859

原创 本地gerrit搭建及使用指南

管理者关注部分搭建gerrit环境 下载JRE Download jre-1.8路径: https://www.oracle.com/technetwork/java/javase/downloads/index.html 下载gerrit wget https://gerrit-releases.storage.googleapis.com/gerrit-3....

2020-02-14 18:08:18 4983 1

原创 vmware中的linux客户机设置主机作为的代理服务器

最近折腾vmware中的Linux客户机,客户机代理访问互联网,伤了脑筋。最后终于将它折腾过了,顺便记录一下。电脑主机环境:win10、代理功能正常的ss(windows环境下开启代理后,windows能正常访问互联网就算正常了)。客户机环境:vmware15(VMWARE15的这个版本,支持透传usb,直接访问Usb存储设备)、Ubuntu18 前置条件...

2020-01-01 15:59:12 1568

原创 fuchsia.zbi文件剖析

使用out/default.zircon/tools/zbi工具,可以将zbi文件进行分析拆分。下面简单看一下,google的fuchsia.zbi文件构成,

2019-11-30 22:58:42 495

原创 mkimage用法

平时我们经常使用mkimage做出可以被uboot引导的镜像文件。看看它的用法:实例:mkimage -A arm -O linux -T kernel -C none -a 0x40000000 -e 0x40000000 -n jqh -d out/default.zircon/s5p6818-boot-shim.bin uImage;具体参数的解释可以参考如下描述,Usag...

2019-10-29 22:46:25 1071

原创 pdf文件多合一方法

主要借助linux系统中的已有工具pdfunite进行多份pdf文件合成linux系统中自带pdf处理工具,一般可以很简单使用如下命令将两份pdf合成一份pdf文件。```bashpdfunite 1.pdf 2.pdf 1_2.pdf```就是上面这条命令这么简单。如果遇到成千上万份pdf文件,合成一份咋办借助pdfunite工具,我们可以使用shell脚本,来完成重复合...

2019-10-07 21:25:35 798

原创 fuchsia编译框架生成目标父子节点关系图,脚本实现

该脚本主要是根据ninja生成的graphviz dot file文本文件,然后根据其中一个label节点,查找 其父子节点。方便理清该节点的编译链接关系。该脚本生成某一个label节点的父子节点dot描述内容,存为dot类文件。然后使用dot工具,将dot文件生成png或者Pdf文件。#!/bin/bash#set -xPARA_N=2if [ $# -lt $PARA_N ];th...

2019-09-29 17:32:12 324

原创 nanopim3的GPIO中断功能浅尝

nanopim3的开发板,通过排座引出了部分GPIO引脚,如下图所示:本例,使用GPIOB30做简单测试,看能否设置成功gpio中断,在中断服务程序中,添加打印查看中断次数。所以首先编写gpio中断驱动代码,以ko的形式,模块加载到正在运行的Linux系统中。代码如下:(其中62是GPIOB30的统编号)#include <linux/init.h> #inclu...

2019-08-25 22:40:43 339

原创 fuchsia学习-banjo-tutorial.md(下)

C++语言风格 C++比c语言版本稍微复杂一些。让我们来看一下。banjo转译器生成三个文件1、第一个文件在c语言版本中已经介绍讨论过了,其他两个文件在目录`//zircon/build-`_TARGET_`/system/banjo/ddk-protocol-i2c/gen/include/ddktl/protocol/`。2、`i2c.h`——你的程序需要包含的文件。3...

2019-07-22 23:08:32 374

原创 fuchsia学习-banjo-tutorial.md(上)

banjo教程本文档是zircon驱动开发套件[Zircon Driver Development Kit]文档的一部分内容。总览Banjo是一个转换编码器。一个将fidl定义的接口语言转换成目标语言的程序(例如*.fidl转换成*.c,*.cpp,*.java等)。详细内容可以参考:https://fuchsia.googlesource.com/fuchsia/+/mast...

2019-07-08 22:39:47 626

原创 fuchsia学习-getting_started.md

fuchsia是google开发的一款全新操作系统,是一种微内核操作系统。pink+purple = fuchsia,粉色+紫色= 紫红色,什么东西?有另外一种解释:灯笼海棠。长什么样子?如下:开始fuchsia之前,需要准备好环境,debian系统需要安装如下:sudo apt-get install build-essential curl git python unzip获...

2019-06-28 23:11:07 1074

转载 linux等待队列

转自 linux等待队列wait_queue_head_t和wait_queue_t等待队列在linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wai...

2019-05-30 23:00:31 157

原创 nanopim3文件系统支持strace和gdb

这篇文章主要讲,如何根据源码,编译后安装到nanopim3的文件系统中。把strace和gdb安装好了之后,那么linux用户态的调试手段基本准备就绪了。本文使用的 源码,基本都是接近最新版本的。nanopim3文件系统支持stracestrace源码路径https://github.com/strace/strace/releases下载源码包strace-5.0.tar.xz,解压进...

2019-04-10 22:22:47 270

原创 journal日志部分参数理解

详细参数请参考http://0pointer.de/public/systemd-man/journald.conf.html某单板参数如下:[Journal]Storage=persistent存储在disk#Compress=yes#Seal=yes#SplitMode=uidSyncIntervalSec=2s间隔2秒存入diskRateLimitInterval=0...

2019-03-21 11:26:39 3060

原创 nanopim3文件系统添加动态库并支持ssh功能

在前一篇文章Nanopim3文件系统制作-支持telnet及tftp功能的文件系统基础上,本文将添加必要的动态库。并支持ssh,scp等功能。动态库的添加在根文件系统中创建lib目录。然后从交叉编译工具链的目录4.9.3/arm-cortexa9-linux-gnueabihf/sys-root查找依赖的动态库,并模仿sys-root目录创建对应的软连接。(或者全部拷贝到文件系统的对应目...

2019-03-09 22:18:03 251

原创 Nanopim3文件系统制作-支持telnet及tftp功能

        接前一篇Nanopi M3另辟蹊径开机记录 ,已经把uboot和内核kernel成功烧录到256M的sd卡中,并能够正常启动。现在需要挂载一个文件系统(之前的文件系统缺少很多东西,配置也没,所以无法进行正常的学习开发),支持telnet登录,tftp下载功能,避免频繁插拔sd卡。busybox制作生成最小文件系统源码可从地址下载:https://github.com/hell...

2019-02-19 22:25:53 397

原创 Linux设备管理的简单分析

首先给出几个常见概念:class、bus、device、device driver、platform_device、platform_driver系统中,关系简图如下(从总线bus的角度分析)可以看到device和device driver必须依附于某一种总线。就是说总线下面挂着一些已经注册过的设备,一个设备对应着一个设备驱动。如果从类别class的角度分析,这些设备就会被分为具体...

2019-02-12 11:28:35 1886

原创 Nanopi M3另辟蹊径开机记录

本篇文章的文件系统是瘦身版的,不健全的。但这恰恰是学习内核的好方法,系统运行时会提示缺少什么,或者异常。当你解决这些问题的时候,就会了解到文件系统为什么有这些文件,这些目录。网上有很多关于nanopi m3的烧写开机启动教程。大多数都是根据友善之臂公司给出的官方教程,这里我也把官方教程链接贴出来:http://www.arm9.net/nanopi-m3.asp。今天我要记录的nanopi...

2019-01-23 23:10:15 1169 1

原创 树莓派3B+内核编译

获取内核源码,https://github.com/raspberrypi。选着linux工程代码,https://github.com/raspberrypi/linux,版本分支选择rpi-4.14.y获取内核配置文件如果已经有内核配置文件则不需要此步骤。在当前运行系统中执行如下命令可以获取config.gz配置文件,pi@raspberrypi:~$ sudo modprob...

2019-01-16 10:46:27 4206

转载 转:Linux学习-systemctl 针对 timer 的配置文件

这里给出原文出处,尊重原创。https://www.cnblogs.com/uetucci/p/7762053.html感觉这篇文章将systemd的timer使用讲得比较清晰,易懂。很快就上手了。我根据这篇文章,实际动手验证了一把,写了一个用例。/lib/systemd/system/hello.service[Unit]Description=test[Service]...

2018-12-25 23:24:31 425

原创 elf文件分析

最近在分析Linux模块加载过程的时候。发现模块加载过程和链接过程有点点相似,都需要做重定向、解决符号引用问题。而这些操作都和elf文件格式有着莫大的联系,所以在出模块加载过程分析的文档之前,先分析一下elf文件。elf全称executable and linkable format,是一种可执行文件、目标文件和库使用的文件的格式。替代了早年的a.out文件格式。linux不仅将elf用于用户...

2018-12-23 22:32:32 929

原创 链接原理笔记

主要基于GNUlinker script文档。首先直观感受下,连接器的基本工作之一,当然这只是一个简图:ld组合一定数量的目标文件和库文件,重定位他们的数据,绑定引用符号。通常编译程序的最后一步就是就是运行ld。 Ld支持AT&amp;T链接编辑语法指令集,明确控制链接过程。 比较常见的链接命令:ld -o output /lib/crt.o hello.o -lc。它的意思是,将...

2018-12-13 10:32:18 303

原创 第一个linux驱动程序,hello

前面已经把学习linux的开发环境搭建好了,现在逐步开始学习开发过程。先从内核驱动开始,写一个网上已经被写烂的实列程序。先把它编译好,放进linux系统运行,看看是什么样子。创建文件夹hello,在文件夹下面创建文件hello.c代码如下:#include &lt;linux/init.h&gt;#include &lt;linux/kernel.h&gt;#include &lt;...

2018-12-09 15:59:30 4816 2

原创 实践问题集

本片文章,记录开发测试过程中遇到的所有问题。会持续更新。1、使用linux,中途断电。重新开机遇到这个问题:The root filesystem on /dev/sda1 requires a manual fsck......(initramfs)解决方法:其实就是需要我们自己手动使用fsck检查磁盘(initramfs) fsck /dev/sda1执行命令后,一...

2018-12-06 23:38:27 1297

原创 busybox制作最小根文件系统

接上篇,qemu启动linux内核 ,启动内核失败后,开始制作一个最小的ramdisk根文件系统。根文件系统制作工具busybox,还是走大众路线吧。源码包下载地址:https://busybox.net/直接进入busybox的根目录,准备编译,使用默认配置文件defconfig,生成配置文件make ARCH=arm defconfig再修改下配置项make ARCH=arm ...

2018-11-19 22:13:48 730

原创 qemu启动linux内核

linux内核源码请自行下载了。下面开始编译Linux4.16.4的内核试试,进入内核根目录,先生成内核配置文件:make ARCH=arm vexpress_defconfig因为准备挂载ramdisk文件系统,所以这里还需要再配置一下内核,make ARCH=arm menuconfig,去配置支持RAMDISK,配置步骤如下:然后编译内核:make A...

2018-11-06 22:38:33 5585

原创 qemu启动uboot

首先下载uboot源码包,UBOOT源码下载地址:http://ftp.denx.de/pub/u-boot/。这里取版本u-boot-2018.09.tar.bz2。配置好指定的交叉编译工具链,工具链的制作方法,请参考文章——ARM交叉编译工具链的制作 。进入Uboot的根目录,执行如下命令编译UBOOT:1、生成配置文件, make ARCH=arm vexpress_ca9x4_...

2018-11-04 21:23:52 9756

原创 ARM交叉编译工具链的制作

今天是10.24程序员节日。奖励一下自己,写一篇实践博客。制作arm交叉编译工具链。目前比较新的制作交叉编译工具链的软件是crosstool-NG,非常方便,还可以编译高版本的内核,比如4.16及以上。Crosstool-NG的下载地址:http://crosstool-ng.github.io/download/,可以在该网址找到如何安装crosstool-NG。今天在这里实际操作一...

2018-10-24 22:00:26 1564

原创 设备树快速入门

A devicetree is a data structure for describing hardware.一个用于描述硬件的数据结构。https://www.devicetree.org/基本概念Dtsi——类似于c语言的头文件Dts——类似于c语言的源文件Dtb——类似于c语言的编译产物、二进制文件使用device tree,用户需要了解自己的硬件配置和系统运...

2018-10-20 12:41:57 671 2

原创 l4re编译框架简析

最近在研究l4re源码,一个非常不错的微内核操作系统。内核是用C++写的。现分享一下最近看的成果,同时也是自己记录。文本格式排版之后,直接乱套了,也是够了,只能截图了。

2017-11-27 23:18:25 630

原创 samba快速配置使用

好几年前就注册过CSDN账号,一直没使用。后来工作时间长了发现,记笔记,写博客真的非常有助于梳理和记忆一些知识。现在准备好好耕耘csdn,一点一点积累。共勉。该笔记主要讲解samba的常见使用,非常基础的用法。1、samba是什么?samba是SMB(信息服务块)的一种实现方法。主要用来实现Linux系统的打印和文件服务。linux用户可以通过配置samba服务器,实现与win

2017-10-24 23:31:24 244

gerrit-3.1.3.war

本工具是linux环境下的工具,gerrit-3.1.3.war,用于搭建linux环境下的gerrit代码走查服务器。结合git代码托管工具,完成代码走查合库。

2020-02-15

crosstool交叉编译制作工具源码包

此工具是crosstool-ng源码包,可以制作arm交叉编译工具链等,智能选择组件包,比如gnu libgcc,binutils等。

2018-12-08

嵌入式人机交互界面设计

嵌入式人机交互界面设计,有助于人们来学习界面的设计。

2014-01-19

空空如也

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

TA关注的人

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