自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 U-Boot v2020.01 和 Linux 5.4 在 RK3399 上部署

U-Boot v2020.01 和 Linux 5.4 在 RK3399 上部署mainline 的 u-boot 和 linux kernel可能很多玩 Linux 的同学都听过 mainline 或者 upstream 这两个词,但是又搞不清他们到底指的是什么。一般大家拿到一块开发板,上面搭载的都是芯片原厂开发的 u-boot 和 linux kernel,我们称之为vendor 的 u...

2019-12-06 14:44:55 1860

原创 Linux Kernel 和 U-Boot 编译的那些事

Linux Kernel and U-Boot compile之前的文章:《一次搞定交叉编译》 给大家讲了如何安装交叉编译工具链,搭建交叉编译环境。这篇文章主要教大家如何正确的去编译 Linux Kernel、U-Boot 这些著名的开源软件。也许很多同学会说:编译是小 case 啊,我都 make 过成千上万次了!可是你是否有思考过,你编译的时候每一个步骤、执行的每一个命令…它背后隐藏...

2019-11-21 19:00:09 1229

原创 UVC 摄像头在 RK3399 上的应用

USB 摄像头在 RK3399 上的应用1、简介UVC 全称 USB Video Class 、是 USB-IF 定制的一套标准,所有遵循这一标准的 USB 接口摄像头在 Windows Linux 等系统下,几乎能直接使用,达到类似免驱的效果。当然了,并不是说真正的不需要驱动,而是只要某个 USB 接口的摄像头遵循了 UVC标准,它就能被 Window、Linux 系统中一套通用的驱动所...

2019-11-18 10:13:25 2597

原创 eMMC vs Nand

eMMC vs NandeMMC 和 Nand 是嵌入式系统中比较常见的两种存储介质。区别它们有什么异同呢?通过下面这张图可以做一个简单的概括:这里面的的 Host Processor 指的是我们嵌入式主板上的 MCU 或者 CPU,比如 S3C2440、i.MX6ULL,RK3399 这些嵌入式处理器。可以看到 eMMC 其实是在 Nand flash 的基础上封装了一个 Flas...

2019-11-11 10:05:56 3406

原创 Arm Linux 交叉编译

Arm Linux 交叉编译为什么要交叉编译交叉编译其实是相对于本地编译(native build)来说的,我相信大家最开始学习 C/C++ 这些语言的时候,都是在电脑上写程序,然后在电脑上编译生成可执行文件,最后在电脑上运行。程序的编辑——》编译——》运行,整个过程都是在一台 X86 电脑上。当我们开始接触嵌入式开发后,事情变的不一样了,你在电脑上写程序,在电脑上编译出可执行文件,最后这个...

2019-11-09 17:18:26 1087 1

原创 三十分钟配置一个顺滑如水的 Vim

三十分钟配置一个顺滑如水的 Vim先上疗效,给大家看效果:不知道 CSDN 抽了什么封,这张外链的 gif 动图硬是加载不上来,大家直接点击这个链接看效果吧: Vim Fly安装 Vim首先说明,vi 和 vim 是两个不同的版本,vi 是 vim 的精简版本,功能要弱很多,所以如果你的系统里面只有 vi,请执行 apt install vim 命令更新到 vim,而且最好更新到 8.0 ...

2019-11-08 09:04:45 443

原创 U-Boot DM 框架

U-Boot DM框架最近在帮一家开发板移植最新的 U-Boot ,调试驱动的时候遇到了一些问题,比如某个驱动没有被调用啊,后者某个驱动加载失败啊之类的,最终排查的时候发现基本都要从 U-Boot 的 DM 框架入手,于是有了下边这篇总结。U-Boot DM 三要素DM 是 U-Boot 中的驱动框架,全称 Driver Mode。像 Linux Kernel 中的驱动三要素 device ...

2019-11-04 14:20:19 2964

原创 U-Boot中Distro_bootcmd的实现分析

Distro BootDistro Bootcmd 是U-Boot中设计的一种启动机制,用来自适应各种不同的启动媒介,并从中找到可用的启动镜像然后启动,具体实现逻辑如下:板级自定义启动设备#define BOOT_TARGET_DEVICES(func) \ func(MMC, mmc, 0) \ func(MMC, mmc, 1) \ f...

2019-04-09 10:23:40 5182

原创 Using GDB debug Linux app over ADB

Using GDB debug Linux app over ADB在嵌入式系统上,如果需要用GDB debug某些userspace的应用,一般需要采用remote debug模式,即在target板上通过gdbserver启动应用或者attach到已经在运行的进程,然后再在host端(一般是PC)通过gdb加载对应的可执行程序,再和target连接。host和target连接一般有两种方式:...

2019-01-03 15:07:36 582

转载 20180524 4 Markdown-powered slide generators

4 种基于 Markdown 的幻灯片生成器 这些简单的幻灯片创建工具可以无缝地使用 Markdown,可以让你的演示添加魅力。假设你需要做一个演示presentation。在准备的过程中,你想到“我需要写几张幻灯片”。你可能倾向于简洁的纯文本,认为 LibreOffice Writer 这样的软件对你要做的事情而言像是杀鸡用牛刀。或者你只是遵从你内心深处的极客意识。将 ...

2018-06-11 09:18:15 286

转载 20090203 How the Kernel Manages Your Memory

内核如何管理内存在学习了进程的 虚拟地址布局 之后,让我们回到内核,来学习它管理用户内存的机制。这里再次使用 Gonzo:Linux 进程在内核中是作为进程描述符 task_struct (LCTT 译注:它是在 Linux 中描述进程完整信息的一种数据结构)的实例来实现的。在 task_struct 中的  mm  域指向到内存描述符,mm_s...

2018-06-11 09:17:09 239

转载 20140519 Epilogues Canaries and Buffer Overflows

探秘“栈”之旅(II):结语、金丝雀和缓冲区溢出上一周我们讲解了 栈是如何工作的 以及在函数的序言prologue上栈帧是如何被构建的。今天,我们来看一下它的相反的过程,在函数结语epilogue中栈帧是如何被销毁的。重新回到我们的 add.c 上:int add(int a, int b){ int result = a + b; return re...

2018-06-11 09:15:34 220

转载 20140510 Journey to the Stack Part I

探秘“栈”之旅早些时候,我们探索了 “内存中的程序之秘”,我们欣赏了在一台电脑中是如何运行我们的程序的。今天,我们去探索栈的调用,它在大多数编程语言和虚拟机中都默默地存在。在此过程中,我们将接触到一些平时很难见到的东西,像闭包closure、递归、以及缓冲溢出等等。但是,我们首先要作的事情是,描绘出栈是如何运作的。栈非常重要,因为它追踪着一个程序中运行的函数,而函数又是一个软件的重要组成部...

2018-06-11 09:00:38 229

转载 20090127 Anatomy of a Program in Memory

剖析内存中的程序之秘内存管理是操作系统的核心任务;它对程序员和系统管理员来说也是至关重要的。在接下来的几篇文章中,我将从实践出发着眼于内存管理,并深入到它的内部结构。虽然这些概念很通用,但示例大都来自于 32 位 x86 架构的 Linux 和 Windows 上。这第一篇文章描述了在内存中程序如何分布。在一个多任务操作系统中的每个进程都运行在它自己的内存“沙箱”中。这个沙箱是一个虚拟地址...

2018-06-11 08:59:32 257

原创 Run Linux for ARMv8 on qemu

Run Linux for ARMv8 on qemu对于很多热爱ARM Linux的Geeker来说,如果随时随地打开电脑就能快速搭建一个ARM Linux开发环境,并进行各种hack,将是一件大快人心的事情。但是现实总是不那么尽如人意:你的ARM开发板总不能随时都处于你身边唾手可得的位置 ,它可能躺在你办公室的工位上,也有可能你手边刚好缺一个能够给你的开发板供电的适配器。幸运的是,我们有Q...

2018-04-22 20:28:16 2163 1

转载 Part 1 - How to Use Awk and Regular Expressions to Filter Text or String in Files

awk 系列:如何使用 awk 和正则表达式过滤文本或文件中的字符串当我们在 Unix/Linux 下使用特定的命令从字符串或文件中读取或编辑文本时,我们经常需要过滤输出以得到感兴趣的部分。这时正则表达式就派上用场了。什么是正则表达式?正则表达式可以定义为代表若干个字符序列的字符串。它最重要的功能之一就是它允许你过滤一条命令或一个文件的输出、编辑文本或配置文件的一部分等等。正则表达式的特点正则表达式

2018-04-22 11:07:32 264

转载 Part 2 - How to Use Awk to Print Fields and Columns in File

awk 系列:如何使用 awk 输出文本中的字段和列在 Awk 系列的这一节中,我们将看到 awk 最重要的特性之一,字段编辑。首先我们要知道,Awk 能够自动将输入的行,分隔为若干字段。每一个字段就是一组字符,它们和其他的字段由一个内部字段分隔符分隔开来。Awk 输出字段和列如果你熟悉 Unix/Linux 或者懂得 bash shell 编程,那么你应该知道什么是内部字段分隔符(IFS)变量。a

2018-04-22 10:02:24 244

原创 How to send patch to Linux upstream

如何向Linux 内核提交补丁      对于对Linux kernel有兴趣的开发者来说,很多人都希望自己的代码能够出现在Linux kernel的官方代码中。       一般情况下 ,我们把Linux kernel的官方分之称为mainline,或者upstream。同时,我们把向Linux kernel提交或者贡献代码的过程也称为upstream。      首先要了解Li

2016-03-12 10:49:58 2828 1

空空如也

空空如也

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

TA关注的人

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