自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zwg的博客

一个嵌入式工程师的小小博客

  • 博客(29)
  • 收藏
  • 关注

原创 常见Linux内核函数使用方法

Linux常用内核函数

2023-08-01 19:36:46 120

原创 嵌入式Arm+Linux中断与异常全流程讲解

假设有ins1、ins2、ins3、ins4、ins5,这五个汇编指令,其中ins3是未定义的指令,假设流水线是ARM9的五级(三级也一样,关键是执行这一级在哪个位置),假设流水线已经满载。在指令周期1中,当ins1在执行时,ins2在译码,ins3在取指,此时PC的值为ins1的地址+8(一般说法是PC指向下一条将要执行的指令的地址,这里的执行是概念上的执行,可以理解为运行,运行的第一步是取指,所以PC实际上是指向下一条将要取指的指令的地址);指令周期2中。.........

2022-08-04 20:37:47 956

原创 一些零碎知识点的索引

在看书和看资料的过程中,有一些知识点当时看明白了,但是过段时间忘记后想再去查找时,总是忘了当初是在哪里看到的了,因此建立索引。

2022-08-02 19:33:41 245 1

原创 Linux设备树

本文章基于韦东山关于设备树的课程以及自己的一些想法,目录结构和韦东山老师的视频结构相同。

2022-08-01 18:22:42 638

原创 嵌入式总线与通信

嵌入式通信

2022-07-19 20:49:36 1809 1

原创 Linux的进程与线程、进程管理

所谓进程,就是运行中的程序,没运行的程序只是一段固定的代码,运行中的程序不仅包括代码,还包括运行程序需要用到的资源、程序运行的状态等等。进程还经常被称为任务,一般用户角度来看叫做进程,内核角度来看叫做任务。在一般的操作系统角度看,进程和线程是两种实体,操作系统对进程和线程有两套不同的处理流程,比如两套用于表示进程和线程信息的数据结构,两套调度算法等等。普遍认为,进程是操作系统管理机器资源的基本单位,线程是程序运行的基本单位,即进程是资源容器,线程是执行单元。但在Linux系统中(不包括传统UNIX系统),并

2022-07-10 17:39:48 633

原创 韦东山第三期课程内容概要

韦东山第一二期衔接课程内容概要1 数码相框之系统框架1 数码相框之系统框架  介绍整个项目的需求和设计框架,最后33min处简单解释了为什么要写多进程、多线程的程序。

2022-07-04 10:15:04 756

原创 秋招刷题笔记

刷题笔记

2022-07-01 14:49:52 499

原创 韦东山第二期课程内容概要

韦东山第二期课程内容概要0 使得一个裸板Jz2440能运行linux应用程序的过程0 使得一个裸板Jz2440能运行linux应用程序的过程

2022-07-01 14:49:18 354

原创 2022年嵌入式秋招题目及解答

1 ARM体系结构、总线、各种外设、微机原理1、ARM的中断处理流程,以及每个阶段做什么事2、中断上下文3、ARM的开发流程4、AD采样的精度5、你用过的ARM9和Cortex-A7芯片做个对比?6、大端模式和小端模式,如何用程序判断7、项目中用的哪款芯片,它的一些配置8、中断和轮询的效率问题9、关于arm的Cortex-M内核寄存器,以下说法正确的是:A. R0~R12为通用寄存器,所有的ARM指令均可访问用于计算;B. R13为栈指针寄存器,包含MSP和PSP,特权模式下使用MSP

2022-05-25 16:02:05 1150

原创 嵌入式学习过程中的问题及解决办法

1、2022-2-16问题描述:两三个月前没问题,过一段时间不用后,Linux系统中用arm-linux-gcc进行make时,在已经安装好arm-linux-gcc并且之前make没有问题的情况下,报错:arm-linux-gcc: Command not found解决办法:(1)键入命令:find -name arm-linux-gcc得到其路径,比如/usr/local/arm/4.3.2/bin/arm-linux-gcc(2)键入命令:vim ~/.bashrc,在文件最末尾添加: P

2022-04-29 10:45:21 446

原创 Ubuntu18.04中下载安装arm-linux-gcc交叉编译器

1已经有的编译器说明  不知道什么时候虚拟机Ubuntu18.04上的编译器变成了7.5.0版本,键入命令 gcc -v 可以看到以下信息:root@zwg-virtual-machine:~# gcc -vUsing built-in specs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapperOFFLOAD_TARGET_NAMES=nvptx-noneOFFLOAD_TARGET_

2022-04-26 11:17:49 2975

原创 韦东山第一二期衔接课程内容概要

韦东山第一二期衔接课程内容概要1 u-boot分析之编译体验2 u-boot分析之Makefile结构分析1 u-boot分析之编译体验通过分析u-boot的makefile去分析其代码结构2 u-boot分析之Makefile结构分析

2022-03-23 11:48:25 2337

原创 韦东山第一期课程内容概要

韦东山S3C2440A嵌入式课程第一期笔记

2021-12-22 21:03:50 1082 1

原创 Makefile相关知识(基于韦东山课程第一、三期)

Makefile相关知识1、传统的gcc -o 指令的缺点 9.52、makefile规则介绍 9.53、makefile语法介绍 9.63.1、通配符以及一些常用符号3.2、假想目标3.3、变量4、makefile自带的一些函数 9.74.1、$(foreach var,list,text)4.2、$(filter pattern...,text)和(filter-out pattern...,text)4.3、$(wildcard pattern)4.4、$(patsubst pattern,repl

2021-10-08 17:22:21 443

原创 《操作系统导论》笔记(二)内存的虚拟化

《操作系统导论》笔记(二)内存的虚拟化1、内存虚拟化的概念2、实现内存虚拟化的机制:地址转换2.1、一些假设2.2、进程地址空间在内存中可能的样子2.3、硬件工作:动态重定位(基址加界址)2.4、OS的工作3、实现内存虚拟化的机制:分段3.1、何为分段3.2、如何确定虚拟地址属于哪个段?3.3、分段的缺点4、实现内存虚拟化的机制:分页4.1、何为分页4.2、页表4.2.1、基于页表的地址转换4.2.2、页表的大小及存放位置4.2.3、页表中的具体内容4.2.4、目前分页的缺点1、内存虚拟化的概念程序以进

2021-08-31 19:20:26 748

原创 《操作系统导论》笔记(一)CPU的虚拟化

《操作系统导论》笔记(一)CPU的虚拟化1、什么叫CPU的虚拟化2、CPU虚拟化的原理3、CPU虚拟化的设计目标:性能与控制权3.1 单个进程的执行:受限制的直接执行3.2 多个进程的执行:进程间的切换3.3 多个进程的执行:进程间的调度1、什么叫CPU的虚拟化假设机器只有一个CPU,但是却可以“同时”运行多个程序,比如同时听歌和打游戏。具体来说,在操作系统和硬件的协同下,将单个CPU(或其中一小部分)转换为看似无线数量的CPU,从而让许多程序看似同时运行,这就是所谓的虚拟化CPU。2、CPU虚拟化的

2021-08-10 16:38:04 1009

原创 arm中的程序计数器PC

在cpu中,一条指令的执行简单的划分为:取指-译码-执行,三个部分。pc中存放的是下一条将要“执行”的指令的地址,这里的执行并不是取指-译码-执行中的第三个步骤,而是指的将存放于内存中的指令输送进cpu中“准备执行”,那么第一步就要取指,pc中存放的是从内存中取指所需要的地址。arm处理器的字长是32位,则一条汇编指令的长度也是32位,也就是四个字节,而内存中一个地址单元是一个字节,也就是说一条指令要占据4个地址单元。假设程序顺序执行(一条接一条,没有跳转),假设当前正在cpu中执行的指令A的首地址是

2021-07-23 17:02:27 1238 1

原创 Windows、Linux、ARM下一个可执行程序的产生过程

交叉编译通常编译嵌入式程序的平台称为宿主机(如:PC的Ubuntu系统,CPU的架构为x86架构或者其他的因特尔架构);运行嵌入式程序的平台称为目标机(如:某款ARM开发板,CPU架构是ARM架构)。在x86平台编辑(一般为SourceInsight)和编译(arm-linux-gcc)ARM架构的程序,两者属于不同的架构平台,从而属于交叉编译。...

2021-07-23 16:46:27 167

转载 内核源码树的建立

刚看 O’REILLY 写的《LINUX 设备驱动程序》时。作者一再强调在编写驱动程序时必须 建立内核树。先前的内核只需要有一套内核头文件就够了,但因为2.6的内核模块吆喝内核源码树中的目标文件连接,通过这种方式,可得到一个更加健壮的模块装载器,但也需要这些目标文件存在于内核目录树中。所谓内核树,我的理解和网上资料说的一致就是内核源码的一种逻辑形式。那怎么建立呢?为此上网“翻云覆雨”起来而结果却是“惨败而归“。为此托了一天又4个小时(当然包括吃饭睡觉的时间),连个简单的 hello wrold 都没实现。

2021-07-22 11:05:48 346

原创 (一)DSP28335

前言:用于记录一些在学习实验室48V无人机项目所用的DSP28335时的一些心得体会,主要参考资料是普中科技的那个资料手册。1、 通信相关区分开串口通信与串行通信,串口通信(Serial Communication)属于串行通信。通常 DSP 引脚输入/ 输出使用 TTL 电平,而 TTL 电平的 1 和 0 的特征电压分别是 2.4V 和 0.4V,适用 于板内数据传输。TTL 电平与 RS232 电平之间要互相转换,常使用 MAX232 进行 转换待解决:28335中SCI和RS232是什么关系

2021-07-19 16:28:15 3597 1

原创 操作系统笔记(一)30天自制OS

前言:阅读书籍《30天自制操作系统》时的相关心得体会1、各种批处理文件的编写和应用,如p23的asm.bat以及p41的makefile2、c程序经过一系列操作变成机器语言的过程:p60。尤其注意,目标文件其实已经是机器语言文件了,但它还需要链接其他文件才行3、一个问题:C语言中有没有直接写入指定内存地址的语句,或者说完成这个操作的方法4、这个操作系统依据的CPU是因特尔的486,汇编语言也是依据486:p655、算法:循环生成16进制数:p67int a[];for (i=0xa0000;i

2021-07-16 10:46:17 237

原创 Qt笔记(一)上位机

前言:用于记录学习Qt编写上位机时的相关心得体会1、电脑开机之后的桌面是不是也可以理解为一个上位机呢,也是由程序编写出来的,windows的桌面好像是由MFC编写出来的,Linux的桌面是由Qt编写的。2、命名规范:类名 首字母大写,单词和单词之间首字母大写;函数名及变量名 首字母小写,单词和单词之间首字母大写3、快捷键:批量注释:ctrl+ / ;运行:ctrl+r; 编译:ctrl+b;查找关键字:ctrl+f;帮助文档:F1;自动对齐:ctrl+i;同名的.h和.cpp切换:F4;4、如果出现

2021-07-16 10:40:57 786

原创 C语言杂记

前言:记录一些平常遇到的有关C语法的零碎知识。1、变量的声明、定义、初始化三者之间的关系一个变量可以在多个源文件中声明,但是只能在一个源文件中定义;如果文件A.c中的程序想用文件B中的变量(该变量声明在B.h中,定义在B.c中),则必须在A中进行声明,常用方法是:在A.c中#include “B.h”同时在B文件中的书写方法是:在B.h中进行声明,如extern int a;在B.c中定义,如int a;注意:a、变量声明只是告诉编译器有这个东西,并不分配实际地址和内存,而定义才是会分配地址和内

2021-07-16 10:36:24 66

原创 嵌入式安卓项目笔记

前言:时间2021年7月电子科大人文交流月课程《嵌入式安卓系统开发》的大作业项目描述基于VM虚拟机Ubuntu 18.04。参考老师所给的suspendmonitor例程,实现USB插拔监控驱动+APP用户应用程序。具体表现为:编写一个kernel module,注册usb callback,用于监控USB设备的插拔情况,提供/proc/usb_monitor设备节点,提供读取接口,功能开关接口。编写APP用户应用程序,读取/proc/usb_monitor设备节点数据,以RingBuffer形式

2021-07-16 10:26:21 349 2

原创 嵌入式Linux笔记(三)Linux基本组成和文件系统

前言:Linux基本组成和文件系统,内容待补充一、Linux的基本组成Shell的分类:Shell的作用之一就是负责将我们在命令行里编写的指令“翻译”kernel去执行。不同的Shell的命令解释不一样,目前主要的Shell有两种:C Shell(csh)和Bourne-again shell(bash)。Shell的区分:bash的管理员和用户前缀为:#root和$user;csh的管理员和用户前缀为:#root和%user二、Linux文件系统1.文件系统定义:可以认为文件系统是操作系统中封

2021-07-16 10:18:22 66

原创 嵌入式Linux笔记(二)

前言:GCC相关,讲述如何在Linux上编译运行一个.c文件GCC:GNU Complier Collection,即由GNU项目组开发的语言编译器集合,其中包含有C语言编译器。Linux中查看GCC情况:指令gcc -v用GCC编译C源文件并输出:指令gcc -o A B.c,其中B.c为待编译的c源文件,编译后的结果输出到文件A,A如果没有则会自动创建文件A。注意:文件A不用加任何后缀,就单纯的文件名就行;文件B要加后缀.c,因为GCC是很多语言的编译器集合,需要用.c来识别所要编译的源文件是c语

2021-07-16 10:15:20 52

原创 嵌入式Linux笔记(一)

前言:基于虚拟机Ubuntu 18.04.1 LTS,主要介绍了Linux使用的一些基本服务配置。linux的简单模型:用户→shell→kernel→硬件,即用户通过操作shell与kernel进行交互,最终由kernel控制硬件;用户→APP→kernel→硬件,即用户通过操作类似于QQ之类的APP与kernel进行交互,最终由kernel控制硬件。linux的发行版本:所谓的Ubuntu、Redhat和Centos,都叫做发行版本,包含着kernel、shell以及一些APP。Redhat和Cen

2021-07-16 10:11:04 210

原创 Linux设备驱动-字符驱动

应用程序的主要作用与实现方法三个作用:与内存进行IO交互(比如读写文件);输出信息到外设(如点灯);从外设读入信息(如识别键盘按键)。应用程序一般提供三个标准的接口函数来实现这三个功能:open、write、read,这三个接口函数的具体实现在标准C语言库中。C语言库和应用程序都属于用户空间的东西。open负责打开一个文件,write负责往打开的文件里写入信息,read负责从打开的文件里读取信息。(注意:Linux中一切皆是文件,内存和外设也是,所以这个打开的文件可以是内存也可以是具体的外设,比如我op

2021-07-16 09:58:48 481

空空如也

空空如也

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

TA关注的人

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