- 博客(30)
- 资源 (8)
- 收藏
- 关注
原创 基于STM32F103C8T6芯片的linux sdk工程(使用说明手册)
SDK源码链接在本文末尾,如有需要,即可下载。SDK代码目录:.├── cmsis│├── core_cm3.c│├── core_cm3.h│├── newlib_stubs.c│├── stm32f10x_conf.h│├── stm32f10x.h│├── stm32f10x_it.h│├── system_stm32f10x.c│└── system_stm32f10x.h├── drivers│└── STM32F......
2022-04-18 10:19:47
1080
原创 【MCU】STM32F107VC单片机驱动DP83848以太网PHY芯片,移植LWIP 2.1.2协议栈,并加入网线热插拔检测的功能(HAL库)
开发板:杜邦线传输高速数字信号容易出错,所以在用面包板搭建开发环境时,最好使用25MHz时钟的MII接口。如果要用50MHz的RMII接口,那么杜邦线必须要非常非常短,否则时钟信号一旦失真,就无法收发数据!如果DP83848的运行时钟是由单片机的PA8 MCO引脚输出的,那么DP83848的复位引脚一定要接一个下拉电阻。当单片机没有启动的时候,这个下拉电阻会使DP83848处于复位状态。因为单片机没有运行的时候,DP83848没有时钟信号,如果此时DP83848没有处于复位状态,将会对电路产生.
2022-02-19 10:50:26
4338
1
转载 linux内核同步机制之读写信号量
读写信号量与信号量之间的关系类似于自旋锁与读写自旋锁。读写信号量可能会引起进程阻塞,但是它允许N个读执行单元同时访问共享资源,而最多只允许有一个写执行单元访问共享资源;因此,读写信号量是一种相对放宽条件的、粒度稍大于信号量的互斥机制。注意:信号量不允许任何操作之间有并发。理解:定义于#include<linux/rwsem.h> 实际上在arch/X86/incl...
2019-03-25 18:13:15
1271
1
原创 linux内核同步机制之互斥锁
用互斥量进行同步#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <pthread.h>#include <semaphore.h>void *thread_function(void *a...
2019-03-25 18:04:06
313
原创 linux内核同步机制之完成量
定义在头文件linux/completion.h中;完成量(completion)是Linux系统提供的一种比信号量更好的同步机制,是对信号量的一种补充;它用于一个执行单元等待另一个执行单元完成某事;使用完成量等待时,调用进程是以独占睡眠方式进行等待的;不是忙等待;1).定义完成量:struct completion my_completion; //定义完成量my_completi...
2019-03-25 18:00:30
656
原创 linux内核同步机制之顺序锁
定义在头文件linux/seqlock.h中 顺序锁(seqlock)是对读写锁的一种优化,若使用顺序锁,读执行单元绝对不会被写执行单元所阻塞,也就是说,读执行单元可以在写执行单元对被顺序锁保护的共享资源进行写操作的同时仍然可以继续读,而不必等待写执行单元完成之后再去读,同样,写执行单元也不必等待所有的读执行单元读完之后才去进行写操作; 但是写执行单元与写执行单元之间...
2019-03-25 17:55:17
592
原创 linux内核同步机制之读写自旋锁
定义:读写自旋锁(rwlock)是一种比自旋锁粒度更小的自旋锁机制,它保留了“自旋”的概念。但是在写操作方面,只能最多有一个写进程,在读方面,同时可拥有多个执行单元,当然读和写也不能同时进行。一句话:防写不防读理解推荐:http://blog.sina.com.cn/s/blog_6d7fa49b01014q86.html操作:定义于#include<linu...
2019-03-25 17:42:13
299
原创 linux内核同步机制之RCU
定义: 把共享的数据结构复制一个副本,对副本进行修改,最后使用回调机制在适当的时候将指向原来数据的指针指向新的数据。对于被RCU保护的共享数据结构,读操作不需要获得任何锁就可以访问,但写操作在访问它时首先拷贝一个副本,然后对副本进行修改,最后在适当的时机把指向原来数据的指针重新指向新的被修改的数据。这个时机就是所有引用该数据的CPU都退出对共享数据的操作。...
2019-03-25 17:34:37
326
原创 linux内核同步机制之自旋锁
定义: 最多只能被一个可执行线程持有。如果一个执行线程试图获得一个被争用的自旋锁,那么该线程就会一直进行忙循环----旋转----等待锁重新可用。 自旋锁有“加锁”和“解锁”两种状态。“加锁”一直在寻求“解锁”,“解锁”马上会寻求“加锁”,并原地打转,所以加锁位置的代码进入临界区执行,直到解锁。注意: 1.占用临界区的时间必须短; 2.拥...
2019-03-25 17:06:54
346
原创 linux内核同步机制之原子操作
原子操作原子的操作指的就是在执行过程中不会被别的代码所中断的操作,也就是最小执行单位。在Linux中原子操作的方法有很多,有整型原子和位原子,他们在任何情况下操作都是原子的,这些原子操作的实现都是依赖CPU来实现的,因此这些函数都与CPU架构密切相关。整型原子我们arm架构的原子实现在kernel/arch/arm/include/asm/atomic.h1. 设置源自变量的值...
2019-03-25 16:16:53
724
原创 linux内核同步机制之中断屏蔽
定义: 在进入临界区之前屏蔽系统的中断。可保证正在执行的内核执行路径不被中断处理程序抢占,(linux的进程调度都依赖于中断)中断屏蔽相关函数:local_irq_disable(); //屏蔽所有中断...... //临界区代码local_irq_enable(); //开放所有中断注:使用该函数有时会出现问题,如果有些中断在屏蔽中断前就是关闭的,那么在开放...
2019-03-25 15:54:31
584
原创 linux内核同步机制之信号量
定义: 如果有一个任务试图获得已经被占用的信号量时,信号量会将其推进一个等待队列,使其睡眠,当持有信号量的进程将信号量释放以后,再唤醒该任务,并获得该信号量。头文件head.h代码:#ifndef __HEAD_H__#define __HEAD_H__#include <stdio.h>#include <stdlib.h>#incl...
2019-03-25 15:10:53
284
原创 2.NanoPi M1(全志H3)的GPIO控制总结(内核驱动)
开发环境:VM+Ubuntu编译环境:linux3.4交叉编译工具:arm-linux-gcc 4.4.3GPIO内核驱动程序链接:https://download.youkuaiyun.com/download/ddffyhg/11022291用户应用程序链接:https://download.youkuaiyun.com/download/ddffyhg/11022286注意:开发板的linux的...
2019-03-15 16:15:27
2936
原创 Nanopi m1(全志H3)内核驱动编程初探Helloworld(编译方式一)
方法一: 开发环境:VM+Ubuntu 编译环境:linux3.4(全志官方BSP) 交叉编译工具:arm-linux-gcc 4.4.31.编写helloworld设备源码#include<linux/module.h>#include<linux/kernel.h>#include<linu...
2019-03-13 15:41:53
2022
4
原创 1.NanoPi M1(全志H3)基于wiringPi的GPIO控制总结
开发环境:linux-3.4(开发板)步骤:1.安装WiringPi库:git clone https://github.com/friendlyarm/WiringNPcd WiringNP/chmod 755 build./build 检测是否安装成功:gpio readall2.编写LED测试程序 nanopi m1的pin7(...
2019-03-13 13:59:01
1280
1
原创 手机使用SSH登录Nanopi m1总结(本次使用在同一局域网)
ARM板:Nanopi m1+小米USBwifi手机端:JuiceSSH1.Nanopi m1连接用户手机热点(电脑PC端操作) 我使用的是Nanopi通过串口线与PC端连接调试,在putty连接(端口COMx,波特率115200)后,切换到root用户:$ sudo su是否检测到USB wifi:$ ifconfig连接wifi:$ nmc...
2019-03-07 11:39:08
894
原创 nanopi-h3的lichee(linux-4.14)内核编译总结
nanopi-h3内核编译:编译环境:VMware+ubuntu交叉编译器:gcc-linaro-arm.tar.xz内核源码:linux-4.14BSP(全志H3厂商全志科技提供)步骤:1.安装交叉编译器访问此处下载地址的toolchain目录,下载交叉编译器arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz,然后解压编译器:$ m...
2019-03-06 12:00:27
1417
原创 在linux中安装arm-linux-gcc
1.下载amr-linux-gcc-4.4.3:https://download.youkuaiyun.com/download/ddffyhg/110018332.解压命令tar xvzf arm-linux-gcc-4.4.3 -C / (自动解压到系统根目录下路径为:/usr/local/arm)3.配置编译环境路径: 在#/usr/local/arm下输入:vi /etc/prof...
2019-03-06 10:03:11
14654
1
原创 nanopi-h3的lichee(linux-3.4)内核编译总结(方法二)
注意:本方法是在方法一实践之后继续的,可能会依赖方法一中的部分软件包 (方法一链接:https://blog.youkuaiyun.com/ddffyhg/article/details/88087829)nanopi内核编译:编译环境:VMware+ubuntu交叉编译器:gcc-linaro-arm.tar.xz内核源码:linux-3.4 BSP(全志H3厂商全志科技...
2019-03-04 18:06:31
1908
原创 第一节 使用arm-linux-gcc编译hello程序在全志H3上运行
编译环境:VMware+ubuntu交叉编译器:arm-linux-gcc-4.4.31.Ubuntu编写hello.c程序#include <stdio.h>int main(void){ printf("hello,world!\n"); return 0;}2.在Ubuntu上使用arm-linux-gcc编译: ...
2019-03-04 09:55:33
2297
转载 【NanoPi2试用体验】裸机第一步
前几天看了看4418的数据手册,现在准备开始裸机学习,友善的wiki自然是最好的选择吧,然而我就是弄不出,找了第三方的一篇微博,然后才迈出了第一步。官方教程也非常简单,可是是我姿势不对,大家也可以看看克隆Matrix配件代码仓库 $ git clone https://github.com/friendlyARM/matrix.git 编译测试程序进入Matrix代码仓...
2019-03-03 18:15:28
540
原创 玩转NanoPi 2 裸机教程编程-01点亮User LED难点解析
一、关于winhex工具在网上找了很多都不能用,来,这个能用。链接:http://pan.baidu.com/s/1qWy5eu4密码:y8zf二、关于USB转TLL/232串口线我这个是PL2303HXD版本的USB串口芯片。相比PL2303HXA版本好用的多。CH340芯片的USB串口线也是可以的,淘宝卖的很便宜。三、关于串口助手习惯直接用STC的下载工具自带的串口助手。四、关于VMware...
2019-03-03 18:09:58
871
转载 S5P4418裸机编程的实现(替换2ndboot)
参考说明:文中有参考aven_paul博主的S5P4418启动镜像分析一文,具体参考http://blog.youkuaiyun.com/aven_paul/article/details/46772285掰搿实验室博主的“点亮user Led”一文,具体参考http://weibo.com/p/1001603914482173772682S5P4418是四核cortex-...
2019-03-03 18:03:15
702
原创 nanopi-h3的lichee(linux-3.4)内核编译总结(方法一)
nanopi内核编译:编译环境:VMware+ubuntu交叉编译器:gcc-linaro-arm.tar.xz内核源码:linux-3.4 BSP(全志H3厂商全志科技提供)步骤:1.从github上克隆lichee源码$git clone https://github.com/friendlyarm/h3_lichee.git lichee2.安装交叉编译器访...
2019-03-03 14:21:26
1307
原创 ucosii(学习笔记)
ucosii嵌入式系统 特点:适用于小型控制系统,具有执行效率高,占用空间小,实时性能优良和扩展性强等特点。1.任务堆栈的声明: ucos-ii为每个任务建立单独的任务堆栈,并且任务堆栈需要用户自行声明,数据类型为OS_STK,堆栈结构一般用数组来实现。 #define TASK_STK_SIZE 512 OS_STK TaskStk[N...
2018-10-17 08:58:08
502
原创 位绑定
1,位绑定的概念: 将一个单元(32位)中的某个位通过一个算法映射到地址,对地址进行操作(最低位有效)。2,位绑定的优点: 直接操作地址,代码执行效率更高,安全性高3,cortex中绑定区域: SRAM区:0x2000 0000 ~ 0x200f ffff (1M的绑定区) 片上外设:0x4000 0000 ~ 0x200f ffff...
2017-08-11 10:14:01
3089
原创 GPIO初识
1,GPIO的七个寄存器:两个32位配置寄存器:GPIOx_CRL,GPIOx_CRH (x=A,B,C,D,E)两个32位数据寄存器:GPIOx_IDR,GPIOx_ODR一个16位置位/复位寄存器:GPIOx_BSRR一个16位复位寄存器:GPIOx_BRR一个32位锁定寄存器:GPIOx_LCKR2,GOIO操作:输出驱动电路:内部(写操作)...
2017-08-11 09:11:58
1048
原创 ARM中常见的英文解释
MSB : 最高有效位,在二进制中,MSB是最高加权位LSB : 最低有效位;AHB : 先进的高性能总线;VPB : 连接片内外设功能的VLSI外设总线;EMC : 外部存储器控制器;MAM : 存储器加速模块;VIC : 向量中断控制器;SPI : 全双工串行接口;...
2017-06-18 20:50:22
535
原创 嵌入式系统概述(学习笔记)
基本定义: 嵌入式系统是设计完成复杂功能的硬件和软件,并使硬件和软件紧密耦合起来的计算机系统。特点: (1)系统内核小。例如:ENEA公司的OSE公布式系统(内核只有5KB)。 (2)专用性强,属于专用型操作系统。 (3)系统精简,(软硬件无明显区分)。 (4)高实时性的操作系统软件。嵌入式开发方式: 交叉平台开发(在一个平台上开发...
2017-06-16 19:37:16
530
原创 ARM处理器与51单片机程序编写的区别
(1)int变量 在51单片机中占2个字节;在ARM处理器中占4个字节。(2)结构体对齐 在51单片机中按照一个字节对齐;在ARM中按照结构体默认对齐规则对齐。(3)字节在内存的排列顺序 在51单片机中是大端;在ARM中,大多数是小端,部分可以大小端选择。大端堆栈和小端堆栈的区别: 大端堆栈往上生长,小端堆栈往下生长; ...
2017-06-12 20:59:12
6020
基于STM32F103C8T6芯片的linux sdk工程
2022-04-18
基于STM32的贪吃蛇
2017-09-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人