自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(159)
  • 资源 (12)
  • 收藏
  • 关注

原创 ffmpeg源码编译安装 没有生成ffmplay

ubuntu 16.04及以上版本需安装sdl2,低版本安装sdl1.2sudo apt-get install libsdl2-dev配置./configure --prefix=/usr/local/ffmpeg --enable-debug=3 --enable-shared --disable-static输出信息有 ffmplayPrograms:ffmpeg ffplay ffprobe编译,安装,添..

2021-02-27 19:38:33 65

原创 树莓派:No module named ‘PyQt5.QtMultimedia‘

解决:How can I add a missing PyQt5 modules on Raspberry PiIf you installed the Raspbian pyqt5-dev and pyqt5-dev-tools packages, this will only provide the core PyQt5 modules like QtCore, QtGui, QtWidg...

2020-08-14 09:27:08 1216

原创 RT-Thread 应用篇

问题:串口乱码,或者延时时间不准确解决:查看外部晶振配置是否正确,文件stm32f4xx.h中HSE_VALUE要与实际的晶振大小相同。#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */同时,system_stm32f4xx.c文件中PLL_M页要修改为对应值。...

2019-04-16 20:37:35 221

原创 Linux驱动开发(一):字符设备

**目的:**实现最简单的点灯操作。Linux一切皆文件,应用程序访问某个物理设备(文件)时,首先通过open, read, write等库函数调用系统调用接口(System call interface),系统调用通过传进来的系统调用号操作虚拟文件系统(Virtual File System),VFS再根据目标文件类型去找相应的驱动程序。应用程序和VFS之间的接口是系统调用,而VFS与文件系...

2019-04-09 22:06:58 167

原创 RT-Thread移植到S5P4418(五):线程通信

RT-Thread实现了三种线程间通信方式,邮箱(mailbox)、消息队列(messagequeue)、和信号(signal)。邮箱邮箱中的每一封邮件只能容纳固定的 4 字节内容。任何线程都可以发送或接受邮件消息。邮箱控制块struct rt_mailbox{ struct rt_ipc_object parent; rt_uint32_t* msg_pool; ...

2019-03-10 23:21:50 417

原创 RT-Thread移植到S5P4418(四):线程同步

同步是指按预定的先后次序进行运行,线程同步是指多个线程通过特定的机制(如互斥量,事件对象,临界区)来控制线程之间的执行顺序,也可以说是在线程之间通过同步建立起执行顺序的关系,如果没有同步,那线程之间将是无序的。线程的同步方式有很多种,其核心思想都是:在访问临界区的时候只允许一个 (或一类) 线程运行。RT-Thread实现了三种线程间同步方式,信号量(semaphore)、互斥量(mutex)...

2019-02-26 14:36:22 134

原创 RT-Thread移植到S5P4418(三):静态内存池管理

内存堆管理器可以分配任意大小的内存块,非常灵活和方便。但其也存在明显的缺点:一是分配效率不高,在每次分配时,都要空闲内存块查找;二是容易产生内存碎片。为了提高内存分配的效率,并且避免内存碎片,RT-Thread 提供了另外一种内存管理方法:内存池(Memory Pool)。内存池是一种内存分配方式,用于分配大量大小相同的小内存块,它可以极大地加快内存分配与释放的速度,且能尽量避免内存碎片化。此外...

2019-02-21 16:49:55 392

原创 RT-Thread移植到S5P4418(二):动态内存管理

内存管理在RT-Thread中分为动态内存管理和静态内存管理。静态的又称为内存池管理,动态的称为内存堆管理。内存堆:官方提供了三种管理方式。小内存管理。申请时在一块大的、连续的内存中按需求分割出相匹配的小内存块;释放时,归还给堆管理系统。每个内存块都包含一个管理用的数据头,通过双向链表来管理使用块和空闲块。slab 管理算法。TODO!memheap 管理算法。适用于系统含有多个地址...

2019-02-17 19:19:21 516

原创 RT-Thread移植到S5P4418(一):调度器

S5P4418,Cortex-A9系列。结合了 RT-Thread内核实现(六):时间片 和 S5P4418裸机开发(十四):TIMER 的代码。SysTick &amp;amp;amp;amp;amp; PendSVRT-Thread实现线程调度两个比较核心的中断。SysTick更新系统时基。PendSV做上下文切换。SysTick在S5P4418中用timer0代替。周期10ms,注意中断服务函数要清除中断标志位...

2019-01-28 20:25:27 446

原创 imxq Freescale Yocto Project编译记录

参考: IMX6Q环境搭建、安装Yocto包和编译编译内核配置menuconfig指令:bitbake -c menuconfig -v linux-imx单独编译kernel、模块、设备树bitbake -c compile -f -v linux-imxbitbake linux-imx -c compile_kernelmodules -f -vbitbake -c dep...

2019-01-21 09:40:09 612

原创 opencv3 C/C++不同接口

类型CC++头文件#include &lt;opencv/cv.h&gt;#include &lt;opencv/highgui.h&gt;…#include &lt;opencv2/opencv.hpp&gt;#include &lt;opencv2/highgui/highgui.hpp&gt;…主要数据类型IplImage *imgMat img显示...

2018-12-12 17:02:49 502

原创 RT-Thread内核实现(六):时间片

整体思想假如A、B两个线程优先级相同,A先启动,只要A不主动让出CPU,线程B就没机会执行。时间片就是为了解决相同优先级下多线程的并发问题。线程控制块添加rt_ubase_t init_tick属性,remaining_tick记录剩余的时间片。struct rt_thread{ /* rt 对象 */ char name[RT_NAME_MAX]...

2018-12-09 20:51:44 678

原创 RT-Thread内核实现(五):定时器

1

2018-12-09 13:56:50 454

原创 RT-Thread内核实现(四):多优先级

整体思想:前几章并不支持多优先级,都是手动切换指定的线程来运行。支持优先级后,调度器只会找当前最高优先级的线程来运行。RT-Thread属于抢占式实时操作系统,CPU会被当前最高优先级线程抢占,除非最高优先级线程主动放弃,比如调用rt_thread_delay(rt_tick_t tick)延时函数,会将线程状态改为挂起状态或者说阻塞状态,然后执行系统调度。线程控制块添加了几属性...

2018-12-02 00:21:26 285

原创 VSCode 返回上一个光标 (上一个浏览位置)

Ctrl + 鼠标左击跳到定义.返回Windows: Alt + ← ;或者 鼠标侧键Linux: Ctrl + Alt + - ;貌似数字键盘的减号没效果Mac: Ctrl + -

2018-11-28 11:47:12 59836 12

原创 涨姿势系列:花里胡哨调试信息

#include &amp;amp;lt;stdio.h&amp;amp;gt;#define logD(fmt, ...) \ fprintf(stdout, &amp;quot;[\e[34m debug \e[0m] %s:%02d --&amp;amp;gt; &amp;quot;, __FILE__, __LINE__); fprintf(stdout, fmt, ##__VA_ARGS__);#define logE(f

2018-11-28 10:11:05 198

原创 RT-Thread内核实现(三):空闲线程与阻塞延时的实现

空闲函数 idle如果没有其它线程可以运行, RTOS 都会为 CPU 创建一个空闲线程,这个时候 CPU 就运行空闲线程。 在 RTThread 中,空闲线程是系统在初始化的时候创建的优先级最低的线程,空闲线程主体主要是做一些系统内存的清理工作。相关定义。idle.c#define IDLE_THREAD_STACK_SIZE 512 // 空闲线程的栈大小ALIGN(...

2018-11-27 21:20:01 1379

原创 RT-Thread内核实现(二):临界区,对象容器

临界区(Critical Section)保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。RT-Thread 对临界段的保护就处理的很干脆,直接把中断全部关了, NMI FAULT 和硬 FAULT 除外。Cortex M3权威指南 中对异常掩蔽寄存器的说明。当临界段嵌套时,如果简单的开关总中断,内部临界段释放时总中断被打开,而外部临界段并...

2018-11-24 21:59:45 223

原创 RT-Thread内核实现(一):线程与调度

线程是一个独立的、无限循环且不能返回的函数。系统为了顺利的调度线程,为每个线程都额外定义了一个线程控制块,这个线程控制块就相当于线程的身份证,里面存有线程的所有信息,比如线程的栈指针,线程名称, 线程的形参等。rtdef.h中定义了线程控制块结构体/*****************************************************************...

2018-11-19 14:08:33 483

原创 S5P4418裸机开发(十六):ache & MMU

指令cache

2018-11-09 23:37:23 292

原创 Ubuntu 16.04下,vsftpd匿名用户修改默认目录后不能上传、下载等

只针对匿名用户,本地用户未测试。修改sudo vim /etc/vsftpd.confanonymous_enable=YESlocal_enable=YESwrite_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YES上面最基本的几条要保证;修改默认目录anon_root=/home/ftp修改默...

2018-11-07 17:21:34 507

原创 S5P4418裸机开发(十五):SDIO

参考SD4.0协议标准完整版[1-6章中文翻译]sd 协议解析S5P4418,3个SD/MMC控制接口。SDIO协议3.0。寄存器寄存器名功能留坑···

2018-10-18 18:23:05 291

原创 S5P4418裸机开发(十四):TIMER

概述S5P4418,5个定时器Timers 0, 1, 2, and 3有连接GPIO,可以输出PWM时钟源PCLK,2nboot默认配置为200MHzTimers 0 and 1共享一个预分频器,Timers 2, 3, and 4共享另外一个…相关寄存器寄存器功能TCFG0死区,预分频TCFG1DMA,分频TCON自动重装载,手动更新,...

2018-10-05 13:26:33 292

原创 VSCode调试C++/Python,简单配置

launch.json{ &amp;quot;version&amp;quot;: &amp;quot;0.2.0&amp;quot;, &amp;quot;configurations&amp;quot;: [ { &amp;quot;name&amp;quot;: &amp;quot;C++ Launch (GDB)&amp;quot;, // 配置名称,将

2018-10-04 11:23:54 616

原创 S5P4418裸机开发(十三):GIC

GIC系列文章:arm GIC介绍之一arm GIC介绍之二GIC由Distributor和CPU interface组成;Group0,Secure accesses,FIQ驱动Group1,Non-secure accesses,IRQ驱动VIC和GIC:VIC可以用传统单片机中断的思维去理解,GIC应该从Linux系统的角度去考虑。VIC中外设的中断号n 对应到GIC中是 ...

2018-10-02 23:04:48 509

原创 S5P4418裸机开发(十二):IRQ (按键中断) & 串口中断

S5P4418 64个中断源,按键的GPIO口是GPIOB28-30,中断号为54;Interrupt Controller相关寄存器寄存器功能VICIRQSTATUSR,相关位为1表示该IRQ中断发生且未被屏蔽VICFIQSTATUSR,相关位为1表示该FIQ中断发生且未被屏蔽VICRAWINTRR,表示屏蔽之前的中断状态VICINTSELECT...

2018-09-29 18:31:32 745

原创 S5P4418裸机开发(十一):FPU使能 & SWI异常

FPU使能心血来潮想优化一下UART初始化部分,之前是固定的115200,改成根据传入的参数值来设定波特率;// 设置UART0时钟,一般设置为10MHz UARTCLKENB |= (1 &amp;lt;&amp;lt; 2); UARTCLKGEN0L &amp;amp;= ~((3 &amp;lt;&amp;lt; 2) | (0xFF &amp;lt;&amp;lt; 5)); p = (PLLSETREG0 &am

2018-09-23 13:43:03 319

原创 S5P4418裸机开发(十):Undef异常处理

上一帖总结了异常中断处理过程,当未定义指令异常发生时,PC最终会跳到0xFFFF0204,该地址上也是一条跳转指令。为了执行我们自定义的异常处理函数,让这条指令跳向我们的函数即可;接着 5_lds 写;在启动文件中加入一条未定义指令;.text.global _start_start: // 地址 0x42C00000 bl bss_init ...

2018-09-21 22:30:09 240

原创 S5P4418裸机开发(九):异常中断处理概述

ARM体系结构中对异常中断的一些概述七种异常CPU对异常的响应过程从异常中断中返回SWI或Undef:发生该异常时,PC值未更新,它指向当前指令后面的第2条指令,进入中断时,CPU将(PC-4)保存到lr_mode中,(PC-4)指向的是当前指令的下一条指令;异常处理完后应返回当前指令的下一条指令;即MOV PC, LRIRQ或FIQ:通常,CPU执行完...

2018-09-20 22:49:30 386

原创 S5P4418裸机开发(八):lds链接脚本的使用

前几个程序编译链接时, 会使用ld -Ttext=0x42C00000指定.text段的起始地址; 以串口回显的工程为例,查看编译后的文件大小; 再看看.elf文件的段表,arm-linux-objdump -h LMA: load address,加载地址; VMA: virtual address,在RAM中的运行地址; Loader,装载器的作用: 1。...

2018-09-17 00:05:34 619

原创 S5P4418裸机开发(七):SDRAM

Smart4418 板载 1GB DDR3 SDRAM; 芯片型号 K4B4G1646D-BCK0; 16bit位宽,单片容量256Mbit * 16 = 4Gbit,即 512Mbyte; 板载两块,U6,U7;SDRAM基本原理: ARM 内存SDRAM 讲解 DDR SDRAM基本原理详细介绍 SDRAM-高手进阶,终极内存技术指南-完整进阶版SDRAM的全称是...

2018-09-15 22:38:44 306

原创 S5P4418裸机开发(零):小问题记录

一、裸机没有除法和取模运算针对ARM裸机环境,当除数是变量是时,报错信息:undefined reference to `__aeabi_uidivmod'undefined reference to `__aeabi_uidiv'参考:交叉编译之__aeabi_uidiv问题 ARM芯片没有实现除法的硬件结构,因此是采用软件去实现除法。编译器支持软浮点,软浮点的实现是在li...

2018-09-10 23:55:50 331

原创 S5P4418裸机开发(六):串口初试,简单回显(轮询模式)

手册上对S5P4418串口的概述UART0 ~ 4,五个串口可编程FIOFUART0,1,2支持DMAIrDA(红外数据组织)SIR ENDEC…UART配置基本流程TX引脚配置为输出模式,RX引脚配置为输入模式配置UART时钟配置波特率,数据位,停止位,校验位等使能以UART0为例,GPIO配置...

2018-09-05 16:49:06 1120 2

原创 S5P4418裸机开发(五):时钟

还没理解透,留坑

2018-09-04 21:59:08 969

原创 c语言局部变量的内存地址分配顺序

测试程序:#include &amp;lt;stdio.h&amp;gt;int main(){ unsigned int ui = 10; char c = 11; unsigned char uc = 12; int i = 13; double d = 14; short s = 15; printf(&quot;ok\n&quot;); print...

2018-08-31 16:04:46 1094

原创 Makefile使用细节

变量及通配符A := $(C) # 即时变量,此时C未定义,A为空B = $(C) # 延时变量,用到B时再确定具体的值C = abcC ?= 123 # C不是第一次定义,被忽略C += 789D ?= xyz # D是第一次定义all: @echo A = $(A) @echo B = $(B) @echo C = $(C) ...

2018-08-31 12:51:11 216

原创 S5P4418裸机开发(四):按键(轮询模式)点灯

底板按键原理图:三个按键,按下是引脚为低电平; 使用K1,K2来分别控制LED1,LED2; 按键引脚要配置为输入模式;查看用户手册对GPIO输入模式的说明:GPIOxALTFN寄存器选择GPIO功能;GPIOxOUTENB相应位设置为0,表示输入模式;GPIOxPAD查询引脚高低电平;轮询模式配置上面三个寄存器就好,GPIOxINTENB,GPIOxDETMODE...

2018-08-30 17:02:12 756

原创 S5P4418裸机开发(三):运行裸机程序

参考: ①.S5P4418启动镜像分析 ②.S5P4418裸机编程的实现(替换2ndboot) ③.【NanoPi2试用体验】-6 S5PV4418的启动过程分析-(结合原理图&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;datasheet) ④.【NanoPi2试用体验】-7 在 pi2上用裸机程序点亮LED的原理详细分析与实验学习了大牛们的操作,自己再整理一下;系统内存分布:内部ROM(IROM,20...

2018-08-27 23:56:38 1082

原创 S5P4418裸机开发(二):LED点灯

板子原理图:Smart-1608 S5P4418芯片手册:Pi2_SOC_DS_0.1.pdf查看原理图:PDF中搜LED; 以LED1为例,连接引脚是W24(GPIOB12),低电平点亮;芯片手册第15.3.2节,对引脚输出模式的描述; 大致意思是配置GPIOx. Alternate Function Select register(GPIOxAL...

2018-08-27 16:31:00 1019 3

原创 S5P4418裸机开发(一):相关工具准备

交叉编译器摘自官方wiki:http://wiki.friendlyarm.com/wiki/index.php/Smart4418/zh 首先下载并解压编译器: git clone https://github.com/friendlyarm/prebuilts.git sudo mkdir -p /opt/FriendlyARM/toolchain sudo ...

2018-08-25 23:39:45 880

S5P4418芯片手册

S5P4418 数据手册,可复制,可修改; S5P4418。四核cortex-a9系列。                        

2018-11-05

超级终端(串口文件传输)

可用于向开发板传输文件,比如裸机程序,支持Kermit、Xmodem、Ymodem、Zmodem等协议。

2019-04-03

Cortex M3权威指南(中文).pdf

Cortex‐M3 是一个 32 位处理器内核。 内部的数据路径是 32 位的, 寄存器是 32 位的, 存储器接 口也是 32 位的。 CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问 并行不悖。 这样一来数据访问不再占用指令总线,从而提升了性能。

2018-11-18

STM32F429_FinSH控制台.zip

基于STM32F429移植RT-Thread-3.1.1添加FinSH控制台例程。                   

2020-06-09

arm-linux-gcc 4.9.3

ARM Linux C 交叉编译工具链,4.9.3版本,适用于Coterx-A系列。                                  

2019-04-03

Cortex-A9 Technical Reference Manual

Cortex-A9 Technical Reference Manual r4p1 CORTEX-A9技术参考手册

2018-11-05

ARM® Architecture Reference Manual, ARMv7-A and ARMv7-R edition

ARM®架构参考手册,ARMV7A和ARMV7-R版,ARM® Architecture Reference Manual, ARMv7-A and ARMv7-R edition。 各部分有比较详细的说明。

2018-11-09

i.MX 6 BSP Porting Guide

Chapter 1 - Porting U-Boot from an i.MX 6 Reference Board to an i.MX 6 Custom Board Chapter 2 - Configuring the IOMUX Controller Chapter 3 - Registering a New UART Driver Chapter 4 - Adding Support for SDHC Chapter 5 - Configuring the SPI NOR Flash Memory Technology Device (MTD) Driver .....

2019-01-21

rzsz-3.48源码,以及64位编译生成的bin

rzsz-3.48源码,以及arm64平台下的可执行文件,直接拷贝到系统bin目录下,即可使用minicom传输文件

2020-04-29

arm-gcc交叉编译器,生成64位程序

arm交叉编译器,生成64位程序。         

2020-05-11

STM32F429_3.1.3_FinSH控制台.zip

基于STM32F429移植RT-Thread-3.1.3添加FinSH控制台例程。

2020-06-16

Freescale Yocto Project User's Guide

This document describes how to build an image for an i.MX Freescale board by using a Yocto Project build environment. It describes the Freescale release layer and Freescale-specific usage.

2019-01-21

空空如也

空空如也

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

TA关注的人 TA的粉丝

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