- 博客(57)
- 收藏
- 关注
原创 文件系统整体流程介绍
计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。提供文件操作 读出、修改、写入的系统接口。管理和调度文件的存储空间,提供文件的逻辑结构、物理结构和存储方法。还有文件的保护措施,提供权限机制。
2023-06-15 09:19:53
2230
原创 ubuntu samba搭建教程
(5)添加用户(下面的linuxidc是我的用户名,之后会需要设置samba的密码)。在上面valid users = linuxidc中的linuxidc为我的用户名。(8)Windows徽标+R 在弹出的运行窗口中输入 \ip即可访问。(3)创建一个用于分享的samba目录。(6)配置samba的配置文件。(4)给创建的这个目录设置权限。(2)安装samba服务器。(7)重启samba服务器。(1)更新当前软件。
2023-03-14 23:37:40
641
原创 三、字符设备驱动注册新接口
一、register_chrdev()方式注册字符设备驱动register_chrdev(unsigned int major, const char *name,const struct file_operations *fops);但其实这个函数是linux版本2.4之前的注册方式,它的原理是:(1)确定一个主设备号(2)构造一个file_operations结构体, 然后放在chrdevs数组中(3)注册:register_chrdev然后当读写字符设备的时候,就会根据主设备号从chrd
2021-11-11 17:14:09
1064
原创 二、字符设备驱动基础
进行驱动学习之前要先了解一下我们应用程序在使用硬件设备时的一个工作流程。应用程序通过系统提供的API(open、read、write、close等接口)去调用硬件驱动,再由驱动去操作硬件。整理的形成了操作系统的不同层次:应用层 → API → 设备驱动 → 硬件。在驱动源码中我们需要去提供操作系统提供的API的函数实体。这些函数实体要封装成一个fiel_opreation结构体。这个结构体变量的元素主要是函数指针。用来挂接实体函数的地址。每一个驱动程序都需要一个该结构体类型的变量用以向内核注册时提供该变量
2021-11-11 17:12:36
422
原创 一、驱动开发前导
一、驱动开发前导1. 前提条件 1.正常运行linux系统的开发板,开发板的内核(zImage)必须是自己编译的(驱动版本与内核版本移植)。 2.内核源码树:也就是在自己编译内核(zImage)时使用的内核源码。 3.nfs挂载的rootfs,在Ubuntu主机中需要搭建一个nfs的服务器(这样会更方便,但不是必须,若不搭建就要每次重新烧录内核、根文件系统)。2.开发步骤1.驱动源代码的编写、Makefile的编写、驱动源代码的编译。2.insmod装载模块,测试模块是否正常运行,rmmod
2021-11-11 17:10:53
1268
原创 MiniXml - mxmlFindElement()函数解析
详细教程minixml常用函数接口:均需包含头文件#include mxml.h查找节点mxml_node_t *mxmlFindElement(mxml_node_t *node, mxml_node_t *top,const char *name, const char *attr,const char *value, int descend);desc: node节点为被查找的结点 top为顶层结点 name, attrr, value为NULL时表示任意匹配; 否则为
2021-09-17 14:24:08
2306
原创 XML解析库的制作及使用
Mini-XML库资料【中文教程】是一个小型的开源的XML解析器,采用 C 语言开发。该解析器最大的特点就是小型、无须依赖其他类库下载地址官方网址:http://www.minixml.org/git 地址:https://github.com/michaelrsweet/mxml.gitMini-XML有很多版本,这里采用的是当前的最新版 Mini-XML Version 3.2 进行编译。编译Mini-XML库不同版本的库要使用不同的交叉编译工具链,会有少许区别。PC版本
2021-09-15 20:11:49
701
原创 进程和信号
一、进程初识1、程序的开始和结束开始:编译链接时的引导代码。操作系统下的应用程序其实在main执行前也需要先执行一段引导代码才能去执行main。在程序链接时由链接器将编译器中事先准备好的引导代码给链接进去与我们的代码一起组成最终的可执行程序。当我们执行这个程序时,(例如./a.out,在代码中用exec族函数来运行)加载器负责将这个程序加载到内存去执行,加载器是属于操作系统中的程序。总体来说程序在编译链接过程中使用链接器,在程序运行过程中使用加载器。结束:程序的结束分为正常终止和非正常终止两种
2021-07-27 15:46:46
286
原创 根文件系统
根文件系统一、什么是根文件系统根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相 对于普通的文件系统而言它还是内核启动时所挂载(mount)的第一个文件系统,系统引导启动程序会 在根文件系统挂载之后从中把一些初始化脚本(如inittab、rcS)和服务加载到内存中去运行。我们要 明白文件系统和内核是完全独立的两个部分。在嵌入式中移植的内核下载到开发板上,是没有办法真正 的启动Linux操作系统的,会出现无法加载文件系统的错误。根文件系统之所以在前面加一个”根“,说
2021-03-19 14:25:30
1186
原创 HarmonyOS工作原理解析
HarmonyOS工作原理解析文章整理自朱老师HarmonyOS工作原理解析课程,结合本人理解并丰富。希望观看视频版可以点击:【51cto学院对应课程链接】了解鸿蒙系统之前,我们应该了解一下操作系统的演进以及向关概念,以此来对比鸿蒙有哪些技术特性以帮助自己更好的了解鸿蒙操作系统。操作系统操作系统这个词语对于一般的人来说立刻浮现在脑海的就是windows操作系统,但其实操作系统的种类还有很多,例如工业界使用最多的linux操作系统,以及单片机领域使用的RTOS实时操作系统。。。等等,他们处于不同的领域
2020-09-13 12:51:07
5981
原创 Android——服务
Android——服务服务(Service)是Android中实现程序后台运行的解决方案,他非常适用于去执行那些不需要和用户交互而且还要长期运行的任务。服务不依赖于任何用户界面,即使当前程序被切换到后台或者用户打开了另外一个应用程序服务仍能保持正常运行。服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉时,所有依赖于该进程的服务也会停止运行 。服务并不会自动开启线程,所有的代码都是默认运行在主线程当中的。我们需要在服务的内部手动创建子线程,并在这里
2020-09-09 20:31:27
357
原创 Android——网络编程
Android——网络编程网络编程主要是在手机端使用 HTTP 协议和服务器端进行网络交互,并对服务器返回的数据进行解析,也是 Android 中最常使用到的网络技术了,WebView的用法提供了一个 WebView 控件,借助它我们就可以在自己的应用程序里嵌入一个浏览器,从而非常轻松地展示各种各样的网页。 在布局文件中加入一个WebView控件。<WebView android:id="@+id/web_view" android:layout_width="match_p
2020-09-09 20:30:45
491
原创 Android——内容提供者
Android——内容提供者内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,内容提供器可以选择只对哪一部分数据进行共享,从而保证我们程序中的隐私数据不会有泄漏的风险。内容提供器的用法一般有两种,一种是使用现有的内容提供器来读取和操作相应程序中的数据,另一种是创建自己的内容提供器给我们程序的数据提供外部访问接口。访问其他程序中的数据Android 系统中自带的电话簿、短信、媒体库等程序都提供了外部访问接口 。ContentResolver 的基本用
2020-09-09 20:29:43
462
原创 Android——广播
Android——广播Android中每个程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来自于其他应用程序的。Android提供了一套完整的API,允许这些应用自由的发送和接收广播。发送广播借助Intent,接收广播借助广播接收器。广播类型:主要有两种,标准广播和无序广播。标准广播:完全异步执行的广播,在广播发出后所有广播接收器会几乎在同一时刻接收到这条广播消息。效率高,无法被截断。有序广播:同步执行的广播,再广播发出后,同一
2020-09-09 20:28:32
535
原创 android
01Android入门单选题1、下列选项中,属于4G通信网最高传输速度的是()。A、10MbpsB、20MbpsC、50MbpsD、100Mbps参考答案 ????2、下面关于尺寸资源的描述,正确的是()。A、尺寸资源通常定义在res/values/dimens.xml文件中B、尺寸资源只能在XML文件中调用C、尺寸资源的单位只能使用dp表示D、在Android Studio3.2版本中,默认创建了dimens.xml文件。参考答案 :A3、下面关于单元测试的描述,正确的是()。
2020-09-04 01:10:13
15048
2
原创 Z-Stack + OSAL操作系统
Z-Stack + OSAL操作系统Zigbee协议栈与Zigbee协议协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,简单地说就是协议栈是协议和用户之间的一个接口。开发人员通过协议栈来使用这个协议。进而实现数据的收发。Zigbee的体系结构由称为层的各模块组成。每一层为其上层提供特定的服务:即由数据服务实体提供数据传输服务;管理实体提供所有的其他管理服务。毎个服务实体懣过相应的服务接入点(SAP为其上层提供一个接口,每个服务接入点通过服务原语
2020-08-28 00:51:43
2731
原创 ARM汇编指令详解
ARM的编程模式和七种模式基本设定架构(32位)约定Byte(字节):8bitsHalfword(半字) :16 bits (2 byte)Word(字):32bits(4 byte)指令集ARM指令集(32-bit)Thumb指令集(16-bit)Thunmb指令集(16&32bit)不考虑工作模式种类:七种非特权模式(Normal:普通模式)User(用户模式):非特权模式,大部分时候在这个模式下工作特权模式(Privilege:特
2020-08-27 17:40:37
7268
原创 步进电机原理及驱动
步进电机的驱动stm32为例,使用ULN2003,TB6600电机驱动板,介绍步进电机的常用驱动方式。步进电机我使用的是一个教学用的小步进电机,驱动电压只有5V,所有的步进电机驱动原理都是类似的,电机详情如图产品参数直径28mm电压5V步进角度1/64该模块为5线4相步进电机,可以使用普通的uln2003芯片驱动。驱动要求:能够提供较快的电流上升和下降速度,使电流波形经量接近矩形。提供具有戒指期间释放电流流通的贿赂,以前降低绕组两端的反电动势,加快电流
2020-06-12 15:09:58
25939
4
原创 旋转编码器
旋转编码器增量编码器是一种将旋转位移转换为一连串数字脉冲信号的旋转式传感器。这些脉冲用来控制角位移。在Eltra编码器中角位移的转换采用了光电扫描原理。读数系统以由交替的透光窗口和不透光窗口构成的径向分度盘(码盘)的旋转为依据,同时被一个红外光源垂直照射,光把码盘的图像投射到接收器表面上。接收器覆盖着一层衍射光栅,它具有和码盘相同的窗口宽度。接收器的工作是感受光盘转动所产生的变化,然后将光变化转换成相应的电变化。再使低电平信号上升到较高电平,并产生没有任何干扰的方形脉冲,这就必须用电子电路来处理。读数系统
2020-06-12 15:01:08
4976
1
原创 Flash读写
FLASH简单的读、写操作主存储器是以页为单位划分的。stm32根据FLASH主存储块容量、页面的不同,系统存储器的不同,分为小容量、中容量、大容量、互联型,共四类产品。主存储块用于保存具体的程序代码和用户数据。起始地址0x08000000,b0和b1接GND从这里开始执行程序。信息块用于负责由stm32出厂时放置2KB的启动程序(BootLoader)和512B的用户配置信息区。启动程序代码,是用来存储 ST 自带的启动程序,b0接3.3v,b1接GND运行的就是这部分代码 ,用作串口下载代
2020-06-12 14:54:46
6574
原创 DHT11使用详解
产品概述DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传 感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高 的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测 温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快 响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的 湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内 部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集 成变
2020-06-09 10:02:54
50966
7
原创 PWM:脉冲宽度调制(基于STM32)
PWM:脉冲宽度调制(基于STM32)STM32除定时器TIM6和7,其他的定时器都可以用来产生PWM输出,其中TIM1和TIM8可产生多达7路的PWM输出。而通用定时器可以同时产生多达4路的PWM输出。今天尝试使用TIM3的CH3产生一路PWM输出。void TIM3_PWM_Init(u16 arr,u16 psc){ //TIM3 PWM初始化 arr重装载值 psc预分频系数 GPIO_InitTypeDef GPIO_InitStrue; TIM_OCInitTyp
2020-06-07 23:33:16
1154
原创 ARM处理器(三)—— 指令系统
ARM微处理器的指令的分类与格式ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类,具体的指令及功能如表3-1所示(表中指令为基本ARM指令,不包括派生的ARM指令)。指令的条件域当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指
2020-06-04 18:13:54
2356
原创 Android Studio报错:Could not find method implementationSdkVersion():
https://www.cnblogs.com/android-deli/p/10320658.html
2020-04-20 17:45:15
1189
原创 Altium Designer 20 学习笔记
一、基础知识新建工程原理图库:原理图:PCB原件库:PCB:一、元件库的介绍一、电阻容模型的创建工作位置:原件库打开元件库列表:先视图 → 状态栏 (打开),回到主界面、右下角点击 panels → 选择 SCH Library 打开元件库列表。元器件库原理图的操作添加:点击左下角添加;编辑:双击,右侧弹出properties栏,可以编辑名称标号 R? C?...
2020-04-09 22:01:40
5543
原创 Ubuntu中 nginx简单配置
Ubuntu系统安装nginxNginx 是一个很强大的高性能和反向代理服务1.安装nginxsudo apt-get install nginx过程会让选一个Y同意占用内存。2.如果出现无法定位nginx包,进行如下操作:sudo apt-get update3.更新完成之后,安装nginxsudo apt-get install nginx4.更改配置文件,以当...
2020-04-09 21:57:43
1474
原创 Android的文件存储
数据存储Android的数据存储有5种,分别为文件存储,SharedPreferences、SQLite数据库、ContentProvifer以及网络存储。文件存储:常用的存储方式,读写文件,与Java中实现I/O程序完全一样。有两种形式:XML以及JSON。SharedPreferences:存储一些简单的信息的一种机制。采用XML格式将数据存储到设备中,可以存储用户的各种配置信...
2020-04-09 21:49:36
1245
原创 Activity生命周期及页面跳转(Intent)、数据传递
Activity用户与程序的交互是通过Activity完成的,Activity负责管理Android应用程序的登陆界面。1. Activity 的创建在程序包处单击右键,选择New → Activity → Empty Activity后会弹出Customize the Activity界面Activity Name :用于输入Activity名称。Layout Name:用输入布...
2020-04-09 21:47:33
3122
原创 02_UI开发
Android UI开发UI(User Interface)UI(User interface)界面人与手机之间数据传递,信息交互的重要媒介和对话窗口,是android系统中重要的组成部分,界面美观程度影响用户的第一印象。布局的创建Android程序界面是通过布局文件设定的,在每个项目文件中 android studio 会默认创建一个主界面布局,该布局位于res/layout目录中,若...
2020-04-09 21:38:56
363
原创 Android移动开发基础入门
Android基础入门起源:android是一款基于Linux平台的开源操作系统,主要用于移动设备中,如智能手机、平板电脑等。android体系结构android系统采用分层架构,从高到低分为4层依次为应用程序层、应用层序框架层、核心类库和linux内核。应用程序层:应用程序层是一个核心应用程序的集合,所有安装在手机上的应用程序都属于这一层,应用程序框架层:应用程序框架主...
2020-04-09 21:37:56
1629
原创 决策树(Decision Tree)
决策树,是有监督学习的一种算法,并且是一种基本的分类和回归的方法,也就是说决策树有两种:分类树和回归树。这里我们主要讨论分类树。1.个例子理解决策树的原理:你是否玩过二十个问题的小游戏,游戏的规则很简单,参与游戏的一方在脑海中想象某一事物,其他参与者向他提问问题,只允许提问20个问题,问题的答案也只能是对或者错。问问题的人通过推断分解,逐步缩小待猜测事物的范围。决策树的原理与上述的 二...
2020-02-19 16:22:49
1390
原创 K-近邻算法(KNN)
K - 近邻算法 (KNN)一、K - 近邻算法概述K-近邻算法采用测量不同特征值之间的距离方法来进行分类。 K - 近邻算法优点:精度高,对异常值不敏感。缺点:计算复杂度高、空间复杂度高。适用数据范围:数值型和标称型。二、工作原理:存在一个样本数据集合,也被称作训练样本集合。样本中的每个数据都存在标签,即我们知道样本集中每一数据的所属分类的对应关系。再输入没有标签...
2020-02-17 01:54:00
1190
原创 更换pip源为国内源、更新升级pip
为了加快pip包的安装速度,今天就更换一下安装源,同时为了记录,写下了这篇博客,人生苦短 我用python!大家一起加油呀。最近在学习python,其中在使用pip包管理器安装模块时遇到了下载缓慢和错误的情况,经过上网查询了解到pip的默认安装源在国外,至于安装源简单的来说就是我们要从哪里下载我们所需要的资源,当然换成国内源速度就会快得多,道理那你懂的!!!!这里再推荐几个有名的国...
2020-02-16 01:13:30
9485
原创 Ubuntu系统nginx的安装与配置
Ubuntu系统nginx的安装与配置Nginx 是一个很强大的高性能和反向代理服务1.安装nginxsudo apt-get install nginx过程会让选一个Y同意占用内存。2.如果出现无法定位nginx包,进行如下操作:sudo apt-get update3.更新完成之后,安装nginxsudo apt-get install nginx4.更改配置文...
2020-02-14 19:56:03
492
原创 串行口的应用(STM32)
串行口一 串口基础知识串口概念串行接口(Serial port)"同步/异步串行接收/发送器。"又称“串口”USART,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。2、USART的用处基于ARM Cortex-M3内核的STM32微控制器有强大的仿真调试单元,通过标准的JTAG调试设备可以完成对其进行实时监控任务。但是即便如此,USART的存在仍然无法忽...
2019-12-27 18:51:32
1499
1
原创 按键阻塞与非阻塞
按键消抖之 同步 异步 阻塞 非阻塞(基于STM32)同步、异步:通讯方式阻塞、非阻塞:等待状态老张爱喝茶,废话不说/煮开水。出场人物:老张,水壶两把(普通氷壶,简称水壶,•会响M水壶,简称响氷壶)1、老张把水壶放到火上,立等水开,(同步阻塞 )老张觉得自己有点傻2、老张把水誠到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把...
2019-12-26 10:38:39
1487
原创 简单IO口配置_LED灯(STM32)
GPIO口(可编程IO)一、GPIO口概念GPIO是通用输入/输出端口的简称。可以实现输出(驱动外部电路)、输入(检测外来信号)以及模拟一些通信接口通信协议功能,是单片机和外界进行数据交换的必要窗口。GPIO和外界进行都是通过TTL数字电平(高电平或低电平)来进行数据交换的,高电平表示数字“1”,低电平表示数字“0”。二、单片机内部系统框图STM32数据手册[外链图片转存失败,源站可能有...
2019-12-25 18:31:46
3650
2
原创 Java 知识点补充
③实例化子类对象时会默认先执行父类构造(默认使用无参构造),调用父类构造的方法体先执行,再实例化子类对象并且调用子类的构造方法。(对于子类构造来说,相当于隐含super())super使用注意事项:this使用注意事项:①super必须出现在子类的方法或构造方法中。①通过this调用构造方法,仅仅在类的构造方法中才能使用。②用于访问父类成员,例如父类的属性 方法 构造...
2019-12-22 20:06:22
367
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人