首页 文章 精选 留言 我的

精选列表

搜索[内容审核],共10000篇文章
优秀的个人博客,低调大师

聊一聊物联网嵌入式芯片的内容结构

摘要:物联网嵌入式芯片,存储是数据核心之一,这个对于编程和设计的人来说又比较陌生,今天来说说MCU中的内存结构。 本文分享自华为云社区《漫谈嵌入式系统的内存》,作者:o0龙龙0o 。 前言 物联网嵌入式芯片,存储是数据核心之一,这个对于编程和设计的人来说又比较陌生,今天来说说MCU中的内存结构 1、存储器形式 MCU的存储器从存储特性上分为:易失性存储器、非易失性存储器,即常说的Volatile memory和Non-volatile memory 随机存取存储器 :1、DRAM(动态随机存储器)、2、SRAM(静态随机存储器)一般MCU的内存多采用SRAM构成,主要原因是速度快、结构简单。 非易失性存储器(Non-volatile memory)是指即使电源供应中断,存储器所存储的资料并不会消失,重新供电后,就能够读取存储器中的资料。 主要种类如下: 只读存储器(ROM) 可编程式只读存储器(PROM) 可擦除可规划式只读存储器(EPROM) 电子抹除式可复写只读存储器(EEPROM) Flash ROM 磁存储、硬盘、软盘、磁带、3D XPoint、固态硬盘、光存储、光盘 其中 PROM、Flash一般作为MCU数据程序存储器,不过现在也有很多MCU内挂EEPROM,方便用户写入临时数据。 可擦除可编程式只读存储器 是一种断电后仍能保留数据的计算机存储芯片、它是一组浮栅晶体管,被一个提供比电子电路中常用电压更高电压的电子器件分别编程。一旦资料写入完成后,EPROM只能用强紫外线照射来擦除。我们常说的24C芯片就是这类的存储器芯片,他可以按照Byte去擦鞋数据,比按照扇区擦写的Flash效果高很多。 2、数据存储 内存的数据一般可以分为堆、栈、程序代码、数据代码、全局变量代码 一般如下分布: 堆内存(也称内存池)的起始地址及堆区域总大小是LiteOS对程序堆的解释,就是一段AP程序所占用的内存大小,这些大小由链表或是二叉树组成,用于该程序段内存的占用。 栈——堆栈(:stack)又称为栈或堆叠,是计算机科学中的一种抽象资料类型,只允许在有序的线性资料集合的一端(称为堆栈顶端,:top)进行加入数据(:push)和移除数据(:pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作。在MCU由系统LiteOS对剩余内存进行分配用于程序的局部变量的使用和数据malloc产生新分配的内存。 bss段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。bss是英文Block Started by Symbol的简称。bss段属于静态内存分配。 data段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。 text段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域,一般存放在ROM中。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读(某些架构也允许代码段为可写,即允许修改程序)。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。 我么编程时很少会设计到这些的设计,往往是由系统LiteOS自动完成或是由编译器完成。 3、如何利用程序设计内存呢? 宏命令: #pragma alloc_text( "textsection", function1, ... ) 命名特别定义的函数驻留的代码段。该编译指示必须出现在函数说明符和函数定义之间。 #pragma code_seg( ["section-name"[,"section-class"] ] ) 指定分配函数的代码段。code_seg编译指示为函数指定默认的段。你也能够像段名一样指定一个可选的类名。使用没有段名字符串的#pragma code_seg将恢复分配到编译开始时候的状态。 #pragma const_seg( "MY_DATA" ) 导致在#pragma语句后面的常量数据分配在一个叫做MY_DATA的段中。 #pragma const_seg( ["section-name"[, "section-class"] ] ) 指定用于常量数据的默认段。data_seg编译指示除了可以工作于所有数据以外具有一样的效果。你能够使用该编译指示将你的常量数据保存在一个只读的段中。 点击关注,第一时间了解华为云新鲜技术~

优秀的个人博客,低调大师

baigo CMS v3.0-beta-1 发布,内容管理系统

CMS建站系统 baigo CMS v3.0-beta-1 已发布,更新如下: # v3.0-beta-1 * 彻底重写内核,全部基于 baigo 自主开发的框架 —— ginkgo 进行开发。 * bootstrap 更新至 4.3.1 * 重写了几个常用 jQuery 插件 * 改用 PDO 连接数据库 * 修复应用无法限制 IP 访问的问题 项目主页 https://www.baigo.net 下载地址 Github https://github.com/baigoStudio/baigoCMS 开源中国 - 码云 https://gitee.com/baigo/baigoCMS

优秀的个人博客,低调大师

利用11行Python代码,盗取了室友的U盘内容

序言 那个猥琐的家伙整天把个U盘藏着当宝,到睡觉了就拿出来插到电脑上。 我决定想个办法看他U盘里都藏了什么,直接去抢U盘是不可能的,骗也是不可能的。那不是丢我Python程序员的脸? 我必须在电脑上智取,而且不能被他发现。 这个是我的思路: 当一个usb插入时,在后台自动把usb里的东西拷贝到本地或上传到某个服务器。 那么我就可以先借他电脑玩一会,然后把我写好的Python程序在电脑后台运行。每当有usb插入的时候,就自动拷贝文件。 如何判断U盘是否插入? 首先打开电脑终端,进入/Volumes目录,然后插入U盘,能够看到它被挂载在了这个目录之下,那么,如果我们随时扫描这个目录,当这个目录有新文件夹出现时,应该就是有U盘被插入了。 用time.sleep(3)函数,让程序保持运行状态,并且每隔3秒扫描一下/Volumes/目录,一出现新的文件夹,立马拷贝到另外的文件夹。 能够看到U盘在插入大约30s后全部复制到home目录下了。 我只能说到这里了。。。 原文发布时间为:2018-10-22 本文作者:全栈开发者社区 本文来自云栖社区合作伙伴“全栈开发者社区”,了解相关信息可以关注“全栈开发者社区”。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册