Linux
文章平均质量分 84
__毛豆
乘风破浪会有时,直挂云帆济沧海.
展开
-
<Linux> 使用Yocto构建Linux OS
编译环境: Ubuntu 18目的: 通过Yocto项目构建Linux OS,并通过qemu模拟运行.官方网址: [https://www.yoctoproject.org/]官方教程: [https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html]1, 搭建编译环境$ sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chr原创 2021-09-29 15:34:49 · 477 阅读 · 0 评论 -
<Linux> 使用Buildroot构建Linux OS
测试环境: Ubuntu 18目的: 利用开源项目Buildroot构建跟文件系统和内核并利用qemu启动运行.1, 简介buildroot是Linux平台上一个构建嵌入式Linux系统的框架. 整个Buildroot是由Makefile脚本和Kconfig配置文件构成的. 你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(包含boot、kernel、rootfs以及rootfs中的各种库和应用程序原创 2021-09-18 20:44:19 · 1497 阅读 · 0 评论 -
<Linux> 使用开源项目构建x64 Linux OS
开发环境: Ubuntu 18 desktop目的: 编译出image文件,并用qemu仿真运行.1, 搭建编译环境sudo apt install build-essential musl-tools grub-pc-bin qemu2, 下载开源项目git clone https://github.com/MichielDerhaeg/build-linux.gitgit submodule init && git submodule update3, 编译原创 2021-09-17 11:37:41 · 281 阅读 · 0 评论 -
<Linux> 自制x86 Linux OS的ISO镜像
本博文介绍把自行编译Linux kernel + 自行编译busybox,制作成x86平台iso镜像文件,并运行于virtualbox上,本博文是在博文A:<Linux> Linux + busybox build x86 OS___毛豆的博客-CSDN博客的基础上操作,请先阅读之前的博文.这里用到的依赖环境请阅读我之前相关的博文,这里不细写.测试环境: Ubuntu 16.04, VirtualBox1,Linux kernel(详细看上方博文A)下载/配置/编译,下载地址:h..原创 2021-06-29 17:28:47 · 1587 阅读 · 5 评论 -
<Linux> Linux + busybox build x86 OS
操作平台: Ubuntu 16.04 64bit server我们在Ubuntu下,通过qemu运行自制的Linux + busybox的amd64 Linux OS.1,Linux内核a,下载Linux kernel下载地址:https://www.kernel.org/我下载的是linux-5.12.13.b,编译Linux kernel配置configmake O=out_x86_64 x86_64_defconfigmake O=out_x86_64 menuc.原创 2021-06-28 18:45:19 · 8189 阅读 · 2 评论 -
<Linux> 通过源码制作Ubuntu OS
本文基于之前写的两篇博文,整个来龙去脉请先看先前两篇博文:博文A:<Linux> Ubuntu kernel 源码编译 替换___毛豆的博客-CSDN博客博文B:<Linux> 制作minimal amd64 Linux OS___毛豆的博客-CSDN博客基本环境: virtualbox, Ubuntu 16.041,搭建环境首先,我在virtualbox中安装Ubuntu 16.04 server(后称虚拟机A),磁盘设置的是32G(不低于26G),后面需要用这个系统编译源码,所以把内原创 2021-06-25 19:47:26 · 366 阅读 · 1 评论 -
<Linux> 制作minimal amd64 Linux OS
Storage --> Controller: SATA --> Adds Hard disk -->选择步骤1(ubuntu B)创建的磁盘;3,磁盘分区启动Ubuntu A,查看磁盘情况:phoebus@ubuntu:~$ ls /dev/sd*/dev/sda /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb可以看到,我们添加的Ubuntu B的磁盘在这里是/dev/sdb,我们对它进行分区(1个区):phoebus@u.原创 2021-06-24 12:39:36 · 319 阅读 · 0 评论 -
<Linux> Linux Power Management Overview
OverviewGeneric PM传统意义上的Power Management,如Power On/Off, Restart, Suspend to RAM/Disk等.Clock FrameworkClock驱动的Framework,用于统一管理系统的时钟资源.Regulator Framework用于调节CPU等模块的电压和电流值.Dynamic Tick/Clock Event在传统的Linux Kernel中,系统Tick是固定周期(如10ms)的,因此每隔一个Tick,就原创 2021-03-29 16:16:05 · 686 阅读 · 0 评论 -
<Linux> OpenWRT下载,编译,安装
OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。本文编译平台是Ubuntu,测试平台为x86_64架构计算机,有部分内容参考:https://minipc.netlify.app/posts/35104/1, 搭建编译环境$ sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext g.原创 2020-11-23 18:55:29 · 1982 阅读 · 0 评论 -
<Linux> Lakka下载,编译,安装
Lakka是轻量级Linux发行,它将一台小小的计算机转化为完整的游戏机。该发行基于OpenELEC且运行RetroArch游戏模拟器。Lakka可以在各种不同的硬件平台上运行,包括个人计算机、Raspberry Pi开发板、WeTek Play设备。Lakka官方编译指导:http://www.lakka.tv/doc/Compiling-Lakka/本编译工程在Ubuntu环境下操作.1,搭建编译环境:$ sudo apt-get install build-essential te.原创 2020-11-23 11:41:00 · 3399 阅读 · 1 评论 -
<Linux> Ubuntu 使用QT创建UI程序
测试环境: Ubuntu 19.101,下载QT下载地址:http://download.qt.io/我下载的是5.12版本,不是最新,截止目前,最新是5.15,下载这版主要是看到这个版本有在2020.6.16更新.http://download.qt.io/archive/qt/5.12/5.12.9/国内中科大的镜像(1.31G,建议用迅雷等下载工具):http://iso.mirrors.ustc.edu.cn/qtproject/archive/qt/5.12/5.12.原创 2020-10-06 23:53:55 · 1066 阅读 · 0 评论 -
<Linux>Ubuntu使用glade创建gtk UI应用程序
国外有篇关于glade创建UI的文章不错,本文大致按那个示例,自己动手做一遍.https://prognotes.net/2016/03/gtk-3-c-code-hello-world-tutorial-using-glade-3/https://prognotes.net/gtk-glade-c-programming/1,实验效果2,安装gladesudo apt-get install glade3,工程点击左上角的创建图标创建一个glade工程,然后选择右上的原创 2020-10-05 00:29:14 · 1086 阅读 · 0 评论 -
<Linux> Ubuntu 第一个UI应用程序
Ubuntu的桌面是gnome,基于gtk开发的,gtk是C语言开发的,总结来说Ubuntu的桌面是C写的.本次例程是在Ubuntu 19.10上做的,其它版本类似.1,安装环境# 安装编译环境$ sudo apt-get install build-essential# 安装gtk,截止今天,最新版是3.99,19.10自带3.0$ sudo apt-get install libgtk-3-dev# 安装示例代码$ sudo apt-get install gtk-3-exa原创 2020-10-04 12:52:45 · 705 阅读 · 0 评论 -
<Linux> Ubuntu 开机应用自启动
在Ubuntu Xenial (Ubuntu 16)之前,开机应用自启动使用的是rc.local, Ubuntu Xenial及之后采用systemd, 而Ubuntu 16则在中间起着过渡作用,既可以使用rc.local,也可以使用systemd.我们这里采用新的方式.systemd(system daemon)是Linux下的一种init软件,由Lennart Poettering带头开发,其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Sh原创 2020-09-30 11:39:18 · 1373 阅读 · 1 评论 -
<Linux> Ubuntu 第一个驱动开发
本次我们介绍如何在Ubuntu开发驱动.首先需要下载Ubuntu对应kernel的源码(详细看这:https://blog.csdn.net/qq_23922117/article/details/108831625):# 查看可用linux source$ sudo apt-get update$ apt-cache search linux-sourcelinux-source - Linux kernel source with Ubuntu patcheslinux-source-原创 2020-09-28 20:07:54 · 612 阅读 · 0 评论 -
<Linux> Ubuntu kernel 源码编译 替换
本次是在win10自带的hyper-v上安装Ubuntu 16.04 server虚拟机进行试验(desktop版本类似),ubuntu的系统源代码编译后大概需要15G的内存空间,加上压缩包,及编译之后安装modules, kernel等等,大概需要20G空间.1, 下载Ubuntu Serverhttp://releases.ubuntu.com/16.04/ubuntu-16.04.7-server-amd64.iso镜像大概800多M,国内下载比较慢,可以用迅雷(2M/s还是没问题的)等下原创 2020-09-27 17:54:06 · 754 阅读 · 0 评论 -
Orange Pi One(全志 H3)安卓源代码编译总结
入手一块Orange Pi One,然后官方提供的安卓源代码是Android K的,之前我是弄别的项目是编高版本的,比如Android M等等,一开始以为高版本向下兼容,Android M编译是用JDK 7,Android K不支持JDK 7,只能用JDK 6,期间从7改到6遇到不少麻烦,在这里分享一下,希望大家能少走点弯路.先来说一下编译安卓需要的环境(我是用的Ubuntu),需要安装以下工具:...原创 2018-05-12 01:06:34 · 3412 阅读 · 0 评论 -
㉔AW-H3 Linux驱动开发之HDMI驱动程序
HDMI: High Definition Multimedia Interface,高清多媒体接口,是一种全数字化视频和声音发送接口,可以发送未压缩的音频及视频信号。HDMI有4种类型的接口,分别为 type A, type B, type C和type D,下面我们来看一下这4种接口的定义:Pin type A type B type C type D 1 ...原创 2019-01-10 20:39:26 · 6490 阅读 · 2 评论 -
㉕AW-A33 Linux驱动开发之audio子系统驱动程序
在Linux源码里,Aduio这一部分现在是一个独立文件夹叫sound,在2.x的版本时,sound这个目录是在drivers里的,后来从这个里面剥离出来了,很多人不知道其中的原因,我也不知道,我们先回顾一下这段历史,当时Linux主线的audio还在使用OSS架构,一开始是在drivers里,后来就把OSS架构这个audio剥离出来了,可能是因为OSS走向了商业化的原因,后来因为商业化导致版权问...原创 2019-01-17 15:08:47 · 2151 阅读 · 0 评论 -
㉒AW-A33 Linux驱动开发之蓝牙子系统驱动程序
蓝牙从出现开始,经历了1.0-5.0五个版本,每个版本都有不同的特性.随着版本编号的增加,蓝牙的功能也在不断改进.本文介绍了蓝牙标准从1.0-5.0,传输速率的改变,有效传输距离的增加,通信模式的变化,功能的改进.1.0版本传输率约在748~810kb/s,因是早期设计,容易受到同频率之间的类似通信产品干扰,影响通讯质量.这个初始版本支持Stereo音效的传输要求,但只能够以(单工)方式工作,加...原创 2019-01-02 20:52:55 · 1385 阅读 · 0 评论 -
㉖AW-H3 Linux驱动开发之clk子系统驱动程序
本次用纯Linux + 自制Filesystem,这种方式更利于学习底层驱动,在说clk子系统之前,我们先说一下如何做最基础的Linux系统,我们这里主要用的是Linux和busybox,其中busybox用来制作文件系统.这一节直接用之前的博客做的文件系统,详细制作步骤参考:https://blog.csdn.net/qq_23922117/article/details/78312908...原创 2019-01-24 15:01:59 · 749 阅读 · 0 评论 -
①tiny4412 Linux驱动开发之GPIO驱动程序
本次主要是通过讲解蜂鸣器的开发来讲述驱动开发的流程,平台是三星猎户座4412.本次使用的是板载蜂鸣器为有源蜂鸣器,在这里我们先看电路图:从电路图中我们可以看出我们的电平信号会控制NPN型三极管的方式驱动蜂鸣器,可以看出当PWM0为高电平时,蜂鸣器可以发出声音,低电平不发声音,接下来我们找PWM0是哪个引脚,如下图:从图中可知,PWM0是GPD0_0,下面我们去找datashee...原创 2017-11-14 21:51:00 · 1224 阅读 · 0 评论 -
㉓AW-H3 Linux驱动开发之mipi camera(CSI)驱动程序
本次说一下mipi camera的驱动开发,平台用的是全志的H3芯片,项目代号:sun8iw7p1,这次使用运行在H3上面的Ubuntu进行验证的.Linux代码:https://github.com/orangepi-xunlong/orangepi_h3_linuxUbuntu镜像:https://pan.baidu.com/s/1kUF3Dx9MIPI: MIPI联盟由ARM、诺...原创 2019-01-05 16:27:55 · 8126 阅读 · 1 评论 -
基于全志A33的LED驱动开发,安卓6.0.1平台
板子用的是全志A33开发,其它板子也是通用的,有一点要说一下,比如在写一个驱动之后,在Android上无法打开节点,很可能是因为SELinux权限导致的,所以可以通过关闭SELinux的方式解决问题,网上有很多关闭的文章可以看,这里说一个临时关闭的方法:在串口终端或者adb终端输入:setenforce 0,即可临时关闭,重启恢复,接下来介绍一下驱动开发:根据全志的用户手册可以看到,G...原创 2017-05-31 08:50:27 · 3462 阅读 · 0 评论 -
㉑AW-A33 Linux驱动开发之Wireless(Realtek方案)驱动程序
因为最近一直比较忙,很久没有更新了,趁着现在元旦放假的第一天,更一篇,这是在2018年更新的最后一篇,下一篇要到元旦之后了.之前写的一系列驱动都是用的tiny4412平台开发的,前几天把板子卖了,这次采用allwinner的A33来说,因为都是ARM架构,并且都是使用Linux内核,区别这里不需要考虑(Exynos 4412采用Cortex-A9,支持乱序执行,allwinner A33采用C...原创 2018-12-30 18:12:18 · 2125 阅读 · 0 评论 -
⑧tiny4412 Linux驱动开发之触摸屏(TouchScreen)驱动程序
本节主要是说一下触摸屏驱动的编写. 触摸屏输入输入设备,所以我们本次通过输入子系统的方式来实现,输入子系统的框架图如下:然后,我们看一线电路图的触摸屏部分:可以看到触摸屏是通过I2C接口进行数据和命令的传输,接在了i2c1上面,然后,同时接了一个中断引脚,这个中断引脚主要是在初始化和有数据时使用,比如当用户按下触摸屏产生信息后,首先会产生一个中断,告诉soc有数据来了,这个我们就可...原创 2018-06-06 15:16:34 · 2737 阅读 · 0 评论 -
⑫tiny4412 Linux驱动开发之V4L2(usb camera)示例程序
本来这一次准备写SPI的,但是因为读取SPI Flash的数值不正确,还在继续努力,所以就先不写SPI了,回头再写.这次先来说一下V4L2.V4L2全称video for Linux 2,是Linux的新一代视频架构,刚买了一个USB摄像头,所以,这里试一下效果.买的这个摄像头只支持YUYV格式,也就是YUV422,我之前有一套代码是测试MJPEG的,我笔记本的摄像头是支持这种格式的,这里因为...原创 2018-06-12 20:17:26 · 1234 阅读 · 2 评论 -
⑦tiny4412 Linux驱动开发之PWM驱动程序
这一次本来是准备讲解关于LCD亮度调节的,LCD调节用PWM的占空比来显示不同的亮度.然后看到网上EXYNOS4_GPD0(1)是连接到LCD的PWM接口的,可以通过这个调节亮度.但是到了我这,就变了,我这用的是1611的底板,LCD接口用的是LCD3,和上一篇一样,同样没有1611底板的电路图,网上暂时也没找到,就先用1506的电路图凑合着用了,然后1506的电路图没有LCD3接口,我就大概把L...原创 2018-06-04 16:08:20 · 1674 阅读 · 0 评论 -
⑪tiny4412 Linux驱动开发之IRDA(红外)驱动程序
本次来说一下红外驱动的开发.先来解决一下红外红外编解码原理:1,红外遥控简介简介 红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。 由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以,在设计红外线遥控器时,不必要像无线电遥控器那样,每...原创 2018-06-11 11:17:29 · 2008 阅读 · 0 评论 -
⑥tiny4412 Linux驱动开发之LCD(framebuffer)驱动程序
友善之臂对这个的支持还是比较坑的,我买的开发板用的是X710屏,我嘞个去,没有X710的datasheet,网上也找不到,只能另辟蹊径了,幸好,友善提供的源代码里有X710的配置参数,然后也可以顺利地显示出自己定制化的开机logo.在说驱动之前,我们先来看一下框架知识,和以往驱动不同的是,这里用到了framebuffer,如下图是用framebuffer和以往驱动的差异的框架图:如上,...原创 2018-06-03 15:23:55 · 2073 阅读 · 1 评论 -
⑤tiny4412 Linux驱动开发之ADC驱动程序
本次开发ADC没有使用iio子系统,也没有用hwmon子系统的方式开发,而是使用字符设备开发的,原因是友善之臂官方提供了一个线程的ADC驱动,是基于杂项设备写的,为了降低难度,这里也是这样写,等到后边比较深入之后,再用相关子系统的方式做规范开发.在看本文之前可以先看<<S3C2410驱动分析之ADC通用驱动>>先了解一下三星平台ADC使用的大致情况.本例程ADC相关操作使用...原创 2018-05-05 17:50:38 · 1257 阅读 · 0 评论 -
④tiny4412 Linux驱动开发之I2C子系统EEPROM篇
本次写一下基于Linux的i2c子系统的简单驱动程序的编写.首先来了解一下i2c子系统的框架(i2c协议相关知识请自行网上找资料),如下图: 上图大概可以反应Linux中i2c子系统的一个框架,包括①用户层, ②内核驱动层, ③物理硬件层.本次主要是写内核驱动层的内容,如上图i2c子系统的内核驱动层包括:(1)i2c设备驱动层, (2)i2c设备总线层, (3)i2c适配器层.其中(2)i2...原创 2018-05-04 20:59:25 · 789 阅读 · 0 评论 -
③tiny4412 Linux驱动开发之输入子系统
本次介绍Linux的输入子系统的驱动开发.Linux 内核的输入子系统为鼠标、键盘、触摸屏、游戏杆等输入设备提供了驱动框架。 当程序员要为自己的输入设备编写驱动程序时,只需要实现从设备获取输入事件即可。至于 输入事件如何处理,用户接口如何实现,都由输入子系统完成。这大大减轻了输入驱动程序 的编码工作,也提高了驱动程序的稳健性。 同时输入子系统为所有输入设备都为应用层提供了标准的接口,这大大提高...原创 2018-04-13 21:26:37 · 452 阅读 · 0 评论 -
tiny4412新手入门,从零开始一步一步到挂载网络根文件系统
相信很多人都跟我一样,买了tiny4412之后,都无从下手,因为官方出的光盘附带资料跟屎一样,之前买了两套开发板,附带的光盘年久失修,读不出文件,给卖家要了百度云的链接,几十个G的文件,百度云又对大文件限速,20M宽带,愣是80k/s的速度下载了3天4夜,才下载下来,惊喜吧,下载好之后,还发现,资料乱七八糟的,于是只能借助强大的网络来解决我遇到的各种问题,确实发现了几篇很给力的文章这里贴出来:...原创 2017-10-22 20:27:46 · 9551 阅读 · 6 评论 -
⑬tiny4412 Linux驱动开发之RTC子系统驱动程序
本次来说一下Linux的RTC子系统. (Real Time Clock).在说之前,先说一下STM32上的一些事儿,在移植UCOS的时候,总是想着用timer为系统提供定时中断服务,然后这次搞RTC驱动,忽然,就想到了实际上还可以使用RTC来为UCOS提供系统时钟中断服务,STM32上是有集成RTC的,其实UCOS的创始人出的书上就有说,能提供定时中断的对象有很对,甚至可以用交流电来提供,这...原创 2018-06-14 10:25:29 · 649 阅读 · 0 评论 -
②tiny4412 Linux驱动开发之KEY驱动程序
今天写一下按键驱动,本次并没有用输入子系统,但仍然不适合新手直接学,建议先看一下其他人写的按键驱动,然后再看这个,本博文主要是为了复习一下之前的知识.硬件平台:tiny4412(Cortex A9);软件平台:Linux-3.5本次用按键驱动LED灯,我用的tiny4412开发板上有4个按键,4个LED灯,所以可以灯和按键一一对应,首先先查看原理图,如下:LED:对用的原创 2017-11-18 17:16:58 · 1017 阅读 · 0 评论 -
⑳tiny4412 Linux驱动开发之MMC子系统驱动程序
本次我们来说一下MMC子系统的控制器的开发部分,这部分也是和硬件平台相关的,在说这个之前,我们先来了解一下相关硬件的基础知识和概念.MMCMMC全称MultiMedia Card,由西门子公司和SanDisk公司1997年推出的多媒体记忆卡标准。MMC卡尺寸为32mm x24mm x 1.4mm,它将存贮单元和控制器一同做到了卡上,智能的控制器使得MMC保证兼容性和灵活性。MMC卡具有MMC...原创 2018-10-24 17:36:54 · 851 阅读 · 0 评论 -
⑲tiny4412 Linux驱动开发之块设备驱动程序
之前说过了字符设备,网络设备(USB网卡),就差块设备没有说过了,本次就来介绍一下块设备,在Linux里有一种不严谨的说法叫:一切皆文件,实际上比如进程就不是文件,可它却是实实在在存在的东西,而且特别重要,但从这句话中还是可以看出文件是Linux里抽象出来的重要概念,在Linux里的设备主要分为:字符设备,块设备和网络设备,其中,前两种用文件IO操作,后边一种用socket操作,本次说的是块设备,...原创 2018-10-22 14:17:56 · 345 阅读 · 0 评论 -
⑱tiny4412 Linux驱动开发之DMA子系统驱动程序
DMA(direct memory access):直接存储器存取,通俗地说就是数据的搬运工,它的存在使得CPU可以脱离繁琐的数据搬运,可以腾出更多时间去做更有意义的事,早在学生时代,学习STM32的时候,就已经接触和使用了DMA.因为STM32上就有DMA,可以看到DMA是已经很普及的器件了,在display, uart, sound等等诸多方面都可以看到DMA的身影.所以,很有必要掌握DMA的...原创 2018-09-01 17:07:48 · 1151 阅读 · 1 评论 -
⑰tiny4412 Linux驱动开发之SPI子系统(spi LCD)驱动程序
本次说一下SPI子系统,目前代码效果还不是很理想,但是还是可以看到有数据成功交互了,所以,先贴出来暂时先用着.SPI 协议简介 SPI协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在ADC 、LCD 等设备与MCU 间,要求通讯速率较高的场合,SPI 通讯设备之间的常用连接方式见图...原创 2018-08-13 21:46:32 · 1564 阅读 · 0 评论