![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SoC
文章平均质量分 61
守正待
达瓦里氏
展开
-
Mutex 的简单实现(在单机非EmbOS背景下的简单使用)
《xx.h》typedef int (*P_GetMutex)(int, int);typedef int (*P_FreeMutex)(int, int);typedef struct _MUTEX_S{ int Mutex; // 0/1 且 不支持嵌套 int Owner; //因为是在非EmbOS 中使用,这里的Owner代指调用Mutex的函数。 P_GetMutex GetMutex; P_FreeMutex FreeMutex;} MU...原创 2020-05-20 11:39:57 · 421 阅读 · 0 评论 -
ARM:ELF bin Hex axf
前言:PC平台流行的可执行文件格式(Executable File Format),主要是Windows下的PE(Portable Executable)和Linux的ELF(Executable and Linking Format,可执行和链接格式)。他们都是COFF(Common Object File Format)的变种。ARM架构采用的也是ELF文件格式。COFF是在Un...原创 2020-03-09 13:25:06 · 924 阅读 · 0 评论 -
ARM:MPU & MMU & SMMU
1、MPU (Memory Protection Unit);2、MMU(Memory Management Unit)。MMU是比MPU提供了功能更强大的内存保护机制,MPU只提供了内存区域保护,而MMU是在此基础上提供了虚拟地址映射技术,而且在操作上,MMU要比MPU负责。3、SMMU本质上就是一个MMU设备,它的内存转换逻辑与CPU的MMU采用相同的逻辑,都允许将物理上非连续的页...原创 2020-01-22 19:09:31 · 6109 阅读 · 0 评论 -
ARM:用户级 特权级 AND 线程模式 Handler模式
在特权级模式下,用户可以访问和配置系统控制寄存器,比如NVIC中断控制器。然而,如果是在非特权级模式下,系统控制寄存器是不允许访问的,一旦访问将导致硬件异常。Unprivileged: 非特权级,起到保护用户任务的作用,防止用户可以在任意任务中访问和修改系统寄存器,操作不当会造成系统崩溃。Privileged: 特权级,这种模式下用户可以在任意任务中对系统控制寄存器的访...原创 2020-01-16 17:21:35 · 3268 阅读 · 0 评论 -
ARM:NVIC & VIC & GIC & SCB
ARM体系结构支持以下操作模式: 用户 模式 : 在执行完CPU启动代码文件Startup.s后正常的程序执行状态。 系统 模式 : 运行一些操作系统核。 IRQ (中断) 模式 : 通用的中断处理模式。 FIQ (快速中断) 模式 : 快速中断,处理一些特殊的中断源。 管理 模式 : 进入保护状态的执行;通常在复位或使用SWI指令时进入此模式。 ...原创 2020-01-15 20:01:54 · 3603 阅读 · 0 评论 -
ARM : ELF文件
ELF 文件标准里把系统中采用ELF 格式的文件归类为四种:可重定位文件,Relocatable File ,这类文件包含代码和数据,可用来连接成可执行文件或共享目标文件,静态链接库归为此类,对应于Linux 中的.o ;Windows 的 .obj.可执行文件,Executable File ,这类文件包含了可以直接执行的程序,它的代表就是ELF 可执行文件。Linux下,他...原创 2020-01-15 19:51:32 · 469 阅读 · 0 评论 -
MDK 使用 malloc free
(1)栈区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值等,其操作方式类似于数据结构中的栈。(2)堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。分配方式类似于数据结构中的链表。(3)全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态...原创 2020-01-13 20:47:04 · 607 阅读 · 0 评论 -
MDK printf 、scanf 实现
在MDK中使用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式),标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数。所以需要将printf需要调用的fputc里面的输出指向串口(重定向)。方法1--使用微库:( 使用微库的话,不会使用半主机模式。)选择use Microlib https:...原创 2020-01-13 20:26:58 · 1513 阅读 · 0 评论 -
数据结构与算法对嵌入式的影响与使用:Studying Route
未来软件的发展趋势来讲,数据结构与算法会越来越普适:程序=数据结构+ 算法一方面是因为硬件的不断升级,使得很多嵌入式系统现在已经与桌面系统的区别越来越小,可以跑更多的软件平台,使得数据结构与算法可以有更宽阔的应用场景。另一方面,即使是嵌入式设备,其软件功能需求也在不断的升级,很多嵌入式平台应用了越来越多的视觉算法、数据库等等,有些需求的背后也是需要数据结构与算法做支撑的。对...原创 2020-01-13 15:20:46 · 417 阅读 · 0 评论 -
中断:上半部与下半部
cpu在执行程序时,如果有外部中断触发时,如定时器中断、串行总线中断等,cpu停止当前任务从而转去响应中断处理。对于中断函数的处理,原则是尽快处理完事务并退出中断,这一点也比较好理解,尽快处理中断并返回,保证正常任务的执行,并且能否响应其他事务的中断,保证实时性和并发性。 其实,在单片机逻辑编程中已经使用过Linux中断“上下部分”的思维,或者说,Linux中断“上下半部”设计者灵感即源自...原创 2020-01-13 15:12:04 · 715 阅读 · 0 评论 -
SoC:通信总线
REF:https://blog.csdn.net/linton1/article/details/79649249 https://blog.csdn.net/ivy_reny/article/details/56274412AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定: AHB (Advanced High-performance...原创 2019-09-06 16:52:40 · 1771 阅读 · 0 评论 -
C:volatile 和 内存屏障(dmb)
C语言中 volatile 关键字用于告诉编译器,严禁将此处的汇编语句与其它的语句重组合优化。volatile只能保证编译器不会做乱序执行优化. 另外,全局变量虽然可以全局访问,但是不会自带“volatile”属性的!还是要人工添加!!!1. 不对*p操作生成乱序指令(通常如此,具体请看后面的解释) (比如条件判断)2. 每次从*p取数据的时候,一...原创 2019-09-06 16:47:11 · 2076 阅读 · 0 评论 -
C:静态编译 运行时库
REF :http://www.cnblogs.com/haore147/p/3646962.html (编译预处理和条件编译执行过程)C 之 运行时库大致包含以下功能( C run-time library): 启动和退出:包括函数入口以及入口函数所依赖的其他函数等 标准函数:由C语言标准规定的C语言标准库所拥有的函数实现(C标准库) I/O:...原创 2019-09-06 16:50:32 · 207 阅读 · 0 评论 -
C:可重入函数 & 线程安全函数
线程安全:简单来说线程安全就是多个线程并发同一段代码时,不会出现不同的结果,我们就可以说该线程是安全的。线程安全产生的原因:大多是因为对全局变量和静态变量的操作。常见的线程不安全的函数:(1)不保护共享变量的函数;(2)函数状态随着被调用,状态发生变化的函数;(3)返回指向静态变量指针的函数;(4)调用线程不安全函数的函数;常见的线程安全的情况:(1)每个线程对全局...原创 2019-07-26 11:10:04 · 1560 阅读 · 1 评论 -
C:变量与初始化
内存中供用户使用的存储空间分为三部分:程序区、静态存储区、动态存储区。C语言中每个变量有两个属性:第一数据类型;第二存储属性。......................................................................................................................................原创 2019-09-06 16:48:38 · 838 阅读 · 0 评论 -
C : 程序(进程)内存布局
程序布局(进程的物理实体)https://www.cnblogs.com/grandyang/p/4968604.htmlhttps://www.cnblogs.com/fengyv/p/3789252.html一个程序本质上都是由 BSS 段、data段、text段三个组成的。BSS段:在采用段式内存管理的架构中,BSS段(bss segment)通常是指用来存放程序中未初始化的...原创 2019-09-06 16:53:54 · 221 阅读 · 0 评论 -
C :位域实现与对齐
C/C++中以一定区域内的位(bit)为单位来表示的数据成为位域,位域必须指明具体的数目。位域的作用主要是节省内存资源,使数据结构更紧凑。REF: https://www.cnblogs.com/pure/archive/2013/04/22/3034818.html位数组 :https://blog.csdn.net/qq_37375427/article/details/7979...原创 2019-09-06 16:49:23 · 584 阅读 · 0 评论 -
ICP IAP ISP 与 JTAG SWD
ISP:In System Programing,在系统编程ICP:In Circuit Programing,在电路编程IAP:In applicating Programing,在应用编程-----------------------------------------------------------------------ISP与IAP:ISP的实现相对要简单一些...翻译 2019-07-26 10:57:37 · 291 阅读 · 0 评论 -
(ChibiOS )嵌入式操作系统 与 (OSAL)操作系统抽象层
这里主要分享的问题主要是在通讯芯片的设计中遇到的一些ChibiOS 是一款支持可抢占调度的多任务RTOS。支持 Mutex 互斥锁、Semaphore 信号量、Mailbox 邮箱、Virtual Timer 定时器、Message 消息(事件机制)。实现了基于单链表的Heap内存管理方式。----------------------------------------------...原创 2019-07-31 09:45:17 · 2385 阅读 · 0 评论 -
广义计算机系统的堆与栈
首先广义的计算机系统包括的不仅有PC 服务器,也包括嵌入式的SOC等,还包括不用上系统的8位单片机。堆和栈:1、数据结构中的堆和栈数据结构中的栈是一种先进后出的结构,可以通过链表实现,也可以通过数组实现,唯一注意的是,这个栈的访问方式要依靠程序自主维护,关键在于栈顶、栈底位置(指针)的标的和和按照FILO的方式变化;数据结构中的堆是一种经过排序的树形数据结构,每个节点都有一个值。一原创 2017-09-05 13:35:04 · 743 阅读 · 0 评论 -
SoC:存储硬件
存储硬件:RAM、ROM、SRAM、DRAM、SSRAM、SDRAM、FLASH、EEPROM、MTP、OTP原创 2019-05-29 09:27:34 · 451 阅读 · 0 评论 -
SoC:初步介绍
SoC:将原本不同功能的 IC,整合在一颗芯片中。藉由这个方法,不单可以缩小体积,还可以缩小不同 IC 间的距离,提升芯片的计算速度。SOC称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。与SIP的区别:从架构上来讲, SIP 是将多...原创 2019-07-31 09:44:26 · 8123 阅读 · 0 评论 -
C编译与链接 札记
C 代码经过编译后生产不同的 Section ,存放不同功能的代码或者数据。翻译 2017-09-01 17:28:48 · 690 阅读 · 0 评论 -
PCM EQ DRC 音频处理关键词
EQEQ英文全称Equaliser,中文也就是均衡器的意思。它的基本作用是通过对声音某一个或多个频段进行增益或衰减,从而达到调整音色的目的。EQ通常包括以下三个参数:Frequency,频率――这是用于设定你要进行调整的频率点的参数;Gain,增益――用于调整在你设定好的F值上进行增益或衰减的参数;Quantize,频宽比――用于设定你要进行增益或衰减的频段“宽度”的参数。Q值翻译 2017-09-01 15:02:00 · 5555 阅读 · 0 评论 -
代码锁存 RAM 、Cache
代码锁存原创 2017-08-31 17:14:25 · 736 阅读 · 0 评论 -
DMA概论
DMA翻译 2017-08-30 17:23:17 · 350 阅读 · 0 评论 -
调频 调幅 调相 与 通信
信号的调制:调幅 调频 调相---------------------- 1. 振幅调变,也可简称为调幅,AM(Amplitude Modulation),通过改变输出信号的振幅, 来实现传送信息的目的。一般在调制端输出的高频信号的幅度变化与原始信号成一定的函数关系, 在解调端进行解调并输出原始信号。 2. 频率调制,FM调频,是一种以载波的瞬时转载 2017-06-15 17:20:18 · 32916 阅读 · 0 评论 -
SOC上的Flash
Flash编程原理都是只能将1写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程,块内的所有字节变为0xFF.因此可以说,编程是将相应位写0的过程,而擦除是将相应位写1的过程,两者的执行过程完全相反.一、Nor 和 Nand Flash: Flash 因其非易失性及可擦除性而在手持设备中得到广泛的使用。Nor 和N...原创 2019-02-23 14:45:08 · 1876 阅读 · 0 评论 -
SOC电源标志 说明 VCC、VSS、VDD、VEE、VPP、Vddf
VBAT: VBAT是电源电压,VCC: C=circuit 表示电路的意思, 即接入电路的电压VDD: D=device 表示器件的意思, 即器件内部的工作电压;VSS: S=series 表示公共连接的意思,通常指电路公共接地端电压VBUS: VBUS线是向设备供电的电源线-------------------------------------------原创 2017-06-14 20:12:05 · 9960 阅读 · 0 评论 -
进程、线程 :系统资源 与 上下文切换
进程原创 2017-06-08 16:46:59 · 1445 阅读 · 0 评论 -
一种BootLoader的分析说明
SoC上电后,不同架构的处理器,代码执行的初始位置不同。下边,根据最近的一个项目来做出说明,整体的逻辑规划是这样的:*上电判断启动方式,即用户选择是否选择更新程序; 若是,则判断是通过SD卡还是通过串口进行更新;*若用户不曾选择进行程序更新,则在跳转到flash,执行既有代码;以上就是bootloader实现的主要功能。此处上电执行的地址是0x000000...原创 2017-06-01 19:56:41 · 327 阅读 · 0 评论 -
芯片测试
可测试性设计(Design for Testability, DFT)是一种集成电路设计技术,它将一些特殊结构在设计阶段植入电路,以便设计完成后进行测试。.......................................................................................................................原创 2017-06-16 17:55:46 · 1446 阅读 · 0 评论 -
片上系统(计算机)所涉及的硬件资源(RAM ROM SRAM DRAM FLASH... ...)
RAM(Random Access Memory) 随机存储器。存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。 按照存储信息的不同,随机存储器又分为静态随机存储器(Static RAM,SRAM)和动态随机存储器(Dynamic RAM,DRAM)。ROM(Read-Only Memory)只读...原创 2017-05-31 19:35:53 · 1052 阅读 · 0 评论 -
C语言的缺陷与陷阱 札记 - 六 预处理器
宏:只对程序其文本作用 注意宏中的空格(区分的关键) #define Func(x) (x*2+3) 例如:#define F (x) ((x)-1) 注意括号的安全使用 例如: #define f(x)(x*x) 替换结果为:e=(a+b*a+b)*(c+d*c+d) = 5...原创 2019-02-23 14:40:41 · 128 阅读 · 0 评论 -
触屏手势识别的实现
手势识别 目前触控行业主要比较成熟通用的手势识别算法是 模板匹配。主要流程:1、 记录手势的的滑动方向变化的关键节点2、 搜索模板库3、 与模板库匹配识别4、 返回手势识别结果 常规的 : O 、C 、 S 、 Z 、 D 、 W 、M 等字符手势均可通过以上方式实现。...原创 2019-02-23 14:56:39 · 2441 阅读 · 0 评论 -
Arm : armlink
Arm的链接工具Linker Guide PDF一、链接器概述Armlinkの功能 链接ARM代码和Thumb®代码。 生成 interworking veneers,以便在需要时在ARM代码和Thumb®代码之间切换。 根据需要生成range extension veneers,以扩展分支指令的范围。 根据所链接对象的构建属性,自动选择要链接的适当标...翻译 2019-06-06 18:22:07 · 2041 阅读 · 0 评论 -
OverLay 原理与实现
Overlay技术:分类: 大体分为软件Overlay 硬件本文主要介绍 软件实现OVERLAY。至于硬件实现的方式或者说策略,目前能找到的资源有限,且自己还没有弄清楚,所以当前情况下暂不介绍。所谓OVERLAY 即 实现 内存区域的重复利用。RAM在SOC上,是一个快速但单位面积较大的组件,而单位面积较大代表成本较高。有一个降低成本的方法,是将程序代码放在较慢但单位面积较小的f...原创 2019-05-21 19:50:45 · 34750 阅读 · 0 评论 -
九、一个IC设计的公司的组织架构和部门职能
一个初具形式的IC设计公司的架构如下:(以下内容不特指任何具体公司,只是一些行业的参考机构设置.)1、董事长向董事会负责。2、董事长助理负责协助完成董事长的行程安排、计划实施和会议总结等其他事项。3、其他下辖二级部门由各部门总监负责(如人事部)。4、人事部:负责 ----- 薪酬,考核,招聘,培训等。5、财务部:负责 ----- 报销,发票,进帐,出账,税务等。6、行政...原创 2019-05-21 18:37:20 · 9526 阅读 · 0 评论 -
C语言的缺陷与陷阱 札记 - 八 其他
printf 函数族 参考同目录下 《 printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf 函数族》#include <stdio.h>int printf(const char *format, ...);int fprintf(FILE *stream,...原创 2019-02-23 15:06:20 · 232 阅读 · 0 评论 -
C语言的缺陷与陷阱 札记 - 七 可移植性缺陷
How to Write Protable Software in C { Prentice-Hall } C 标准与编译器的区别是关键! 标识符名称的限制与区别 有些C实现将所有字符作为有效字符; 有些C自动截取长字符的尾部; ANSI标准规定,标识符可以为任意长度,但外部名必须至少能由前6个字符唯一...原创 2019-02-23 15:01:40 · 272 阅读 · 0 评论