- 博客(65)
- 资源 (5)
- 收藏
- 关注
原创 <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 493
原创 <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 1522
原创 <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 298
原创 <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 1622 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 8217 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 384 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 338
原创 <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 706
原创 <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 2004
原创 <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 3445 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 1088
原创 <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 1126
原创 <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 717
原创 <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 1394 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 626
原创 <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 779
原创 (12)Android之路====Battery(1),基础知识篇
本篇介绍battery基础知识,包括硬件特性,充放电和软件配置及一些流程的归纳总结.锂电池硬件特性"锂电池",是一类由锂金属或锂合金为负极材料、使用非水电解质溶液的电池。锂电池大致可分为两类:锂金属电池和锂离子电池。锂离子电池不含有金属态的锂,并且是可以充电的。可充电电池的第五代产品锂金属电池在1996年诞生,其安全性、比容量、自放电率和性能价格比均优于锂离子电池。工作原理摇椅理论...
2019-09-24 16:23:57 684
原创 (11)Android之路====Android Java层守护者Watchdog机制及应用
硬件Watchdog基本上已经是嵌入式芯片的标配了,它可以在系统出现严重错误时(程序跑飞,死锁等)无法恢复系统时,重启系统.原理比较简单:用一个定时器作为看门狗硬件,开启后,要定时"喂狗"(计数重载),如果在规定时间内没有"喂狗",看门狗定时器就会进行硬件重启.在Android系统中,除了硬件Watchdog,还实现了一个软件Watchdog,主要是为了弥补硬件Watchdog功能的单一性,它...
2019-09-17 16:31:13 453
原创 (10)Android之路====一夫当关的POWER键
Power键使用的场景和使用的频率都很高,本次从浅层次了解它.首先看一下使用它的场景:power键:单击事件:1,息屏休眠2,亮屏唤醒长按事件:3,长按关机4,长按开机双击事件:5,双击进相机组合事件:关机:6,power + vol-进recovery7,power + vol+进Factory test mode开机:8,power + vol-截屏特...
2019-08-05 15:08:13 1074
原创 (9)Android之路====Android系统OTA更新
本次介绍Android OTA更新,AOSP官方教程的地址是:https://source.android.google.cn/devices/tech/ota/另外可以参考:https://blog.csdn.net/zengrunxiu/article/details/81746220,包含实现, 升级流程, 工作原理, 核心服务, SD卡升级, 修改.原生Android提供的Reco...
2019-06-12 17:32:55 1140
原创 (8)Android之路====Android新增自定义项目配置
本次介绍并不是很深入,仅作为一种参考学习,在lunch的时候,打印出的每一条都是一个完整的项目,这里简单地介绍如何新增一个自定义的完整项目.因为手头上有一个展锐的机子,所以,这里就以展锐平台为例进行介绍,其它平台配置也是类似的.主要分为4个部分:PS: 手机SoC,展锐全球出货量占比27%,仅次于qcom, mtk,虽然不是技术第三,但销量目前稳稳的全球第三1).Android层次项目配...
2019-06-11 16:01:31 1543
原创 (7)Android之路====Android开机流程
开机是建立并运行系统的过程,在日常的开发中也常常会接触到,本次以开机流程为切入点,继续深入了解Android系统.在Android系统上,我们可以把开机分为3个层次,分别是:Bootloader-->kernel-->Android,其中bootloader比较常用的有U-boot和little-kernel, qcom用的是little-kernel,很多国产平台用的是U-boo...
2019-05-31 13:56:56 976
原创 (6)Android之路====Android上层DEBUG与调试
DEBUG和调试在日常工作中是一个很常用的方式.当对软件某一部分不是很了解时,DEBUG是一种很好的学习方式,下面就以Android系统为例,介绍并使用这些功能.我们先来看一下Android的框架:在AOSP工程中,我们这里粗略地把它们看做三层:①由Linux构成的核心层;②由frameworks和packages构成的应用层;③连接内核层和应用层的中间件层.本博文的重点是调试f...
2019-05-30 18:39:55 303
原创 (5)Android之路====APK基础入门5(Android网络编程)
本次说一下网络编程的情况:1.线程通信机制Handler2.Socket通信 (Thread+Handler) internet权限3.JSON数据解析(一)线程通信机制Handler1.Handler简介a)Handler是android系统的线程通信对象,承担着主线程与子线程的通信功能,Handler主要用于异步消息的处理。2. Handler的用法a)创建一个线程,进...
2019-05-29 18:51:10 360
原创 (4)Android之路====APK基础入门4(ListView控件)
本次来说一下ListView控件的情况:(一)ListView 概念:ListView是Android中最重要的组件之一,几乎每个Android应用中都会使用ListView。它以垂直列表的方式列出所需的列表项。java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widge...
2019-05-29 18:45:27 202
原创 (3)Android之路====APK基础入门3(Android数据存储)
本次说一下数据存储方面知识,常用的有5种,如下:1.SharedPreferences存储数据2.文件存储数据3.SQLite数据库存储数据4.Content Provider存储数据5.网络存储数据1.SharedPreferences存储数据a)一种轻型的Android数据存储方式,它的本质是基于XML文件存储b)以key-value键值对的形式存储数据,通常用来存储一些...
2019-05-28 20:00:31 200
原创 (2)Android之路====APK基础入门2(Android 4大组件)
本次内容是Android有4大组件: Activity, Service, Broadcast Receiver, Content Provider.1.Activity的启动方式2.显示意图和隐式意图3.Activity的通信4.Activity的生命周期5.广播接收者Broadcast Receiver6.服务Service7.Content Provider1.Acti...
2019-05-28 15:28:25 323
原创 (1)Android之路====APK基础入门1(UI控件使用)
本来是要写雇主公司自研SoC的Android驱动的,前几天开了个员工,其中一条"罪名"特别强调拷贝操作系统芯片代码到个人存储器,也就是Linux驱动,看来GPL协议保护有时候保护不了我们(就算能用GPL协议维权,也只是得一笔赔偿金,仍然开除),所以,目前不考虑写雇主公司的驱动教程了.我之前完全由我自行实现,且非工作任务,并声明GPL协议的代码,也被领导要求在博客下架,怕被公司法务追责,没办法,我还...
2019-05-28 11:10:25 558
原创 ㉖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 767
原创 ㉕AW-A33 Linux驱动开发之audio子系统驱动程序
在Linux源码里,Aduio这一部分现在是一个独立文件夹叫sound,在2.x的版本时,sound这个目录是在drivers里的,后来从这个里面剥离出来了,很多人不知道其中的原因,我也不知道,我们先回顾一下这段历史,当时Linux主线的audio还在使用OSS架构,一开始是在drivers里,后来就把OSS架构这个audio剥离出来了,可能是因为OSS走向了商业化的原因,后来因为商业化导致版权问...
2019-01-17 15:08:47 2182
原创 ㉔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 6567 2
原创 ㉓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 8197 1
原创 ㉒AW-A33 Linux驱动开发之蓝牙子系统驱动程序
蓝牙从出现开始,经历了1.0-5.0五个版本,每个版本都有不同的特性.随着版本编号的增加,蓝牙的功能也在不断改进.本文介绍了蓝牙标准从1.0-5.0,传输速率的改变,有效传输距离的增加,通信模式的变化,功能的改进.1.0版本传输率约在748~810kb/s,因是早期设计,容易受到同频率之间的类似通信产品干扰,影响通讯质量.这个初始版本支持Stereo音效的传输要求,但只能够以(单工)方式工作,加...
2019-01-02 20:52:55 1402
原创 ㉑AW-A33 Linux驱动开发之Wireless(Realtek方案)驱动程序
因为最近一直比较忙,很久没有更新了,趁着现在元旦放假的第一天,更一篇,这是在2018年更新的最后一篇,下一篇要到元旦之后了.之前写的一系列驱动都是用的tiny4412平台开发的,前几天把板子卖了,这次采用allwinner的A33来说,因为都是ARM架构,并且都是使用Linux内核,区别这里不需要考虑(Exynos 4412采用Cortex-A9,支持乱序执行,allwinner A33采用C...
2018-12-30 18:12:18 2140
原创 ⑳tiny4412 Linux驱动开发之MMC子系统驱动程序
本次我们来说一下MMC子系统的控制器的开发部分,这部分也是和硬件平台相关的,在说这个之前,我们先来了解一下相关硬件的基础知识和概念.MMCMMC全称MultiMedia Card,由西门子公司和SanDisk公司1997年推出的多媒体记忆卡标准。MMC卡尺寸为32mm x24mm x 1.4mm,它将存贮单元和控制器一同做到了卡上,智能的控制器使得MMC保证兼容性和灵活性。MMC卡具有MMC...
2018-10-24 17:36:54 866
原创 ⑲tiny4412 Linux驱动开发之块设备驱动程序
之前说过了字符设备,网络设备(USB网卡),就差块设备没有说过了,本次就来介绍一下块设备,在Linux里有一种不严谨的说法叫:一切皆文件,实际上比如进程就不是文件,可它却是实实在在存在的东西,而且特别重要,但从这句话中还是可以看出文件是Linux里抽象出来的重要概念,在Linux里的设备主要分为:字符设备,块设备和网络设备,其中,前两种用文件IO操作,后边一种用socket操作,本次说的是块设备,...
2018-10-22 14:17:56 357
原创 ⑱tiny4412 Linux驱动开发之DMA子系统驱动程序
DMA(direct memory access):直接存储器存取,通俗地说就是数据的搬运工,它的存在使得CPU可以脱离繁琐的数据搬运,可以腾出更多时间去做更有意义的事,早在学生时代,学习STM32的时候,就已经接触和使用了DMA.因为STM32上就有DMA,可以看到DMA是已经很普及的器件了,在display, uart, sound等等诸多方面都可以看到DMA的身影.所以,很有必要掌握DMA的...
2018-09-01 17:07:48 1182 1
原创 ⑰tiny4412 Linux驱动开发之SPI子系统(spi LCD)驱动程序
本次说一下SPI子系统,目前代码效果还不是很理想,但是还是可以看到有数据成功交互了,所以,先贴出来暂时先用着.SPI 协议简介 SPI协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在ADC 、LCD 等设备与MCU 间,要求通讯速率较高的场合,SPI 通讯设备之间的常用连接方式见图...
2018-08-13 21:46:32 1585
原创 ⑯tiny4412 Linux驱动开发之网络子系统和USB子系统结合驱动程序
本次比较特殊,一次介绍两个Linux子系统,主要原因是和以往的DM9000接口不同,DM9621是USB接口的.我们先来看一下tiny4412上DM9621的接口特性,如下是DM9621的电路图:如上图青靛色的部分,它是连接在外接的USB Hub上的,USB Hub的型号是USB4604,电路连接如下:从上面的电路连接结构可以看出,usb网卡连接在图中青靛色地方,还有两组是扩展USB接口,另外一组...
2018-06-23 19:59:04 1297
原创 ⑮tiny4412 Linux驱动开发之tty子系统(UART)驱动程序
本次说一下tty子系统的驱动编程,因为UART相关的寄存器比较多,同时,应用比较广泛,所以本次的驱动程序量也不少,而且只是完成和特定CPU相关的一部分,通用的部分本次都没有涉及到.在写驱动之前,我们先来了解一下硬件资源和tty子系统框架.1、串口通信简介串口通信指串口按位(bit)发送和接收字节,串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢...
2018-06-17 18:33:33 1165
arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
2017-10-22
安卓多页面切换socket长连接,附加登录,二维码扫描,listview的实现
2017-05-31
方便移植的科大讯飞语音识别程序,代码很好理解,eclipse
2017-05-26
自己写C语言一些基本函数,比标准库实现简单,提高嵌入式效率
2017-04-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人