- 博客(39)
- 收藏
- 关注
转载 make: *** [kernel.img] Error 127 问题
缺少 libc6:i386库文件支持sudo apt-get install libc6:i386如果没有这个库文件,也可使用其他对应的库文件替代
2021-03-31 16:43:48
9465
转载 解决Git存在SSh key 仍报错 Permission denied (publickey)的问题
大概率是秘钥设置不对的问题。首先检查有没有在GitHub的https://github.com/settings/keys上添加你本机的SSH key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:$ ...
2020-04-24 16:17:28
50329
12
转载 多个Git帐号的SSH key切换(不同网站的gitlab&github)
一、生成并添加第一个ssh key$ ssh-keygen -t rsa -C "youremail@xxx.com"在Git Bash中执行命令一路回车,会在~/.ssh/目录下生成id_rsa和id_rsa.pub两个文件添加SSH KEY,在settings里面添加ssh密钥,key里面填写id_rsa.pub里面的内容不明白的请参考GitHub创建SSH Keys二...
2020-03-03 11:16:36
7636
原创 STM32笔记-GPIO
基本结构分析下面我们按图中的编号对 GPIO 端口的结构部件进行说明。1. 保护二极管及上、下拉电阻引脚的两个保护二级管可以防止引脚外部过高或过低的电压输入,当引脚电压高于VDD 时, 上方的二极管导通,当引脚电压低于 VSS 时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。尽管有这样的保护,并不意味着 STM32 的引脚能直接外接大功率驱动器件,如直接驱动电机,强制驱动要...
2020-01-27 09:59:44
535
原创 STM32笔记-系统架构
ICode 中的 I 表示 Instruction,即指令。我们写好的程序编译之后都是一条条指令,存放在 FLASH 中,内核要读取这些指令来执行程序就必须通过 ICode 总线,它几乎每时每刻都需要被使用,它是专门用来取指的。DCode 中的 D 表示 Data,即数据,那说明这条总线是用来取数的。我们在写程序的时候,数据有常量和变量两种,常量就是固定不变的,用 C 语言中的 co...
2020-01-27 09:52:03
687
转载 在Ubuntu下,编译Kernel报错:Makefile:xxx: recipe for target 'xxx' failed
**在Ubuntu下,编译Kernel报如下错误:**Makefile:xxx: recipe for target 'xxx' failedmake[2]:***[arch/arm/boot/compressed/piggy.lzo] Error 1make[1]: ***[arch/arm/boot/compressed/vmlinux] Error 2如下图所示:原因:缺少工具l...
2020-01-16 11:26:24
7958
原创 官方STM32F107_ETH_LwIP_V1.0.0开发包移植笔记
一、LwIP移植记录lwip-1.4.1\src\core\ipv4\icmp.c 注释掉:#if CHECKSUM_GEN_ICMP新增加:#ifdef CHECKSUM_BY_HARDWARE代码如下://#if CHECKSUM_GEN_ICMP// /* adjust the checksum */// if (iecho->chksum...
2019-11-20 09:35:01
1441
2
转载 LwIP 网络接口 netif(ethernetif.c、netif.c)
/** Generic data structure used for all lwIP network interfaces. * The following fields should be filled in by the initialization * function for the device driver: hwaddr_len, hwaddr[], mtu, fl...
2019-11-18 17:48:28
950
转载 LwIP协议栈移植说明
LWIP 的手动移植可以说非常麻烦,需要我们自己实现好多文件。最主要的是,需要实现的文件还没有个统一的说明,必须要东拼西凑! LWIP 的移植由两部分组成,分别为 LWIP 协议栈和 contrib 应用实例 。目前,这两部分是由两个独立的版本库控制,并且由不同的人来负责的(好消息是从2.1.x之后,这俩要合并了)!我们在移植使用 LWIP 时,需要从官网分别下载这两部分的源代码!其中,cont...
2019-11-18 17:40:54
7580
1
转载 LwIP协议栈源码说明
版本变更2.1.x LWIP 从 2.0.3 版本,直接跳到了 2.1.0 版本,又是一个大的版本更新。增加了一些功能!同时源码的目录结构也有了一定的变化(增加了一些文件)! 按照 LWIP 的发布策略,以后 2.1.x 都是从 2.1.0 版本开始的 BUG 修复版本,最新的 BUG 修复版本是 2.1.2。具体变化参见源码目录下的 CHANGELOG 文件。下图显示了 2.0.3 版 ...
2019-11-18 16:52:01
4922
翻译 ESP32 ESP-IDF 编程入门记录
1.首先按照ESP-IDF 编程指南,网址:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/index.html按照文档说明流程搭建开发环境。注:在设置 IDF_PATH 环境变量时,注意编辑文件为 ~/bashrc 并不是所谓的~/.profile第六步连接设备https://docs.espr...
2019-06-06 15:16:45
6368
1
转载 Ubuntu 16.04 LTS 升级到 Ubuntu 18.04 LTS
工具/原料Ubuntu 16.04LTS方法/步骤更新Ubuntu 16.04 在升级之前, 您应该先更新当前的16.04. 建议升级之前更新/升级所有已安装的软件包.运行以下命令:sudo apt update && sudo apt dist-upgrade && sudo apt autoremove安装Ubuntu update ...
2019-01-16 17:55:12
8840
转载 按键采集处理
普通情况下一个按键可用普通IO口或者ADC端口做按键扫描。两种原理图如下:AD按键扫描与长短按键可以用如下的C代码实现:typedef unsigned char u8;typedef unsigned int u16;void AdcInit(void);u16 AdcConverts(unsigned char Channel);u8 KeyRead(void)//读取键...
2018-12-24 15:51:24
1961
转载 VS2017 对 emWin 模拟器编译不成功的解决办法
更改项目属性:1、 右键单击项目(如 simulationtrial) ->属性2、 选择配置为“所有配置”3、 选择配置属性>链接器>输入4、 设置忽略所有默认库选项为:“否”5、 设置忽略特定的默认库选项为:“LIBC.lib;LIBCMTD.lib” 6、 选择配置属性>链接器>高级7、 设置映像具有安全异常处理程序选项为:“否(/S...
2018-10-23 15:40:08
1200
1
转载 STM32 输出 PWM
定时器8属于高级定时器,只存在于大容量产品的103系列中,定时器8输出PWM波形时与通用定时器2、3、4、5不同,必须同时开启主输出(TIM8->BDTR|=0x8000;)才能产生PWM波,其配置如下:/********************************************* 函数名称:void TIM4_PWM_Init(u16 arr,u16 psc) ...
2018-06-04 17:25:56
1312
原创 字符设备驱动
一、字符设备注册内核在内部使用类型 struct cdev 的结构来代表字符设备. 在内核调用你的设备操作前, 你需要编写分配并注册一个或几个这样的结构. 为此, 你的代码应当包含<linux/cdev.h>, 这个结构和它的关联帮助函数定义在这里.有 2 种方法来分配和初始化一个这些结构. 1.定义cdev结构并申请内存,然后将其与操作函数指针相关联struct cdev *my...
2018-04-23 11:00:28
174
原创 Linux文件系统与设备文件
在设备驱动程序设计中,一般会关注file 和 inode 这两个结构体。 1.file 结构体file 结构体代表一个打开的文件,Linux系统中每一个打开的文件都有一个与之关联的 struct file 结构体;mode_t f_mode; 文件模式确定文件是可读的或者是可写的(或者都是), 通过位 FMODE_READ 和FMODE_WRITE.loff_t f_pos; ...
2018-04-21 17:38:54
1493
转载 内核虚拟内存分布
vector :中断向量表fixmap :内核(虚拟)空间地址固定的映射到物理内存vmalloc :非连续内存区域 vmalloc()函数用来分配物理上不连续但线性地址空间连续的高端物理内存lowmem :低端内存pkmap: 高端内存永久映射区module:模块.text(代码段) 可执行文件加载到内存中的只有数据和指令之分,而指令被存放在.text段中,一般是共享的,编译时确定,只读...
2018-04-13 14:15:55
1686
转载 fireprime驱动-GPIO使用
1.GPIOFirePrime 有 4 组 GPIO bank: GPIO0,GPIO1, GPIO2, GPIO3。每组又以 A0~A7, B0~B7, C0~C7, D0~D7 作为编号区分。每个 GPIO 口除了通用输入输出功能外,还可能有其它复用功能,例如 GPIO1_C2,可以复用成以下功能之一:GPIO1_C2SDMMC0_D0UART2_TX每个 GPIO 口的驱动电流、上下拉和重置...
2018-03-19 15:20:09
623
原创 Fireprime第一个Linux程序Hello World”
1.进入内核drivers目录新建自己的驱动目录,如 “pan”: cd fireprime/kernel/driversmkdir pan2.进入 pan文件夹,新建 hello.c Makefile Kconfig 三个文件,并编写代码hello.c#include <linux/kernel.h>#include <linux/init.h&g...
2018-03-18 11:19:07
299
原创 firpeime初探-环境准备
1.进入官方下载页,下载SDK。http://www.t-firefly.com/doc/download/index/id/6.html
2017-12-29 11:01:54
558
原创 Ubuntu使用Git笔记
1.ubuntu系统中直接使用 sudo apt-get install git 来安装git 2.使用ssh-keygen指令创建公钥: $ ssh-keygen -t rsa -C “7529@qq.com”3.执行上述指令之后,在~/.ssh/目录下,生成id_rsa(私钥)和id_rsa.pub(公钥),需要将id_rsa.pub中的内容上传到github中 进入gith
2017-12-02 15:34:13
213
原创 ESP8285调试 IOT_Demo
1.将从乐鑫(Espressif)下载的 ESP8266_NONOS_SDK-2.1.0 压缩包解压到项目文件夹,并将IOT_Demo文件夹移动至该文件夹下参考上述pdf文档,修改相应程序文件,编译通过后通过烧录程序下载至目标板中;3.正常运行情况如下图:
2017-11-22 11:26:48
7138
转载 ESP8266开发环境——Ubuntu编译环境
这里以Ubuntu 16.04.1 x64为例安装交叉编译环境1、下载xtensa-lx106-elf.tar.bz2http://pan.baidu.com/s/1o8S2jF0 gp1m链接失效请联系我或自行Google下载新建esp8266/opt 目录2、解压到opt目录sudo tar -vxjf xtensa-lx106-elf.tar.bz2
2017-10-13 18:13:00
2477
转载 调试SI4432要点
一、无线模块选型。 根据无线通讯的频段,平常用的无线模块主要有315MHZ,433MHZ,2.4GHZ。2.4G最近貌似比较火,像24L01,好多开发板上都配这一款芯片。433MHZ频段的模块常用的有NRF905、CC1101、SI4432。在315MHZ频段好像做普通的遥控器比较多,像超外差模块。 本人想做无线通信,选择在2.4GHZ和433MHZ之间。说下区别,2.4G无线通
2017-09-14 11:32:50
6709
2
转载 vim + ctags + taglist配置和使用
taglist依赖于ctags,所以要先装ctags,否则taglist装了也没法用!1、首先安装ctags首先是ctags的安装,推荐使用exuberant ctags,我们可以从其官方网站上下载它的源码包,进行解压缩,编译,安装即可。1)ubuntu安装sudo apt-get install exuberant-ctags至此,ctags的安装已经完成
2017-01-09 10:11:41
269
原创 Linux网络---TCP编程
详细描述了服务器端和客户端通过TCP通信的基本操作模式,后面示例程序实现,客户端登录服务器,并向服务器写入数据,服务器回发给客户端。
2016-11-30 21:35:26
175
原创 进程与线程的同步机制
程序的可能运行结果,sum 累加到 100 时但程序结果中 sum 计算到 103 时,t3 才被调用,这是因为 signal 与 wait 调用之间有间隙存在。
2016-11-27 16:15:28
255
原创 数据结构-----链表
一、链表概念:线性表的链式存储结构,我们叫做链表----单向链表带头结点的单向链表[1]头结点:数据域默认不使用,指针域保存第一个有效数据结点的地址。[2]尾结点:指针域默认为NULL,作为链表结束的标志。二、数据类型的设计typdef int DataType; //数据域存储数据的类型typedef struct node {DataType data;
2016-11-26 18:39:31
270
原创 数据结构-----顺序表
一、顺序表概念:线性表的顺序存储结构叫做顺序表。特点:数据在内存是连续存储的。[数组]本质:对顺序表的操作,本质是对数组的操作。二、数据类型的设计#define MAX 10typedef int DataType; // 数据类型的设计typedef struct { DataType buf[MAX]; //使用数组来存储顺序表的
2016-11-26 18:37:48
289
原创 循环队列设计
一、队列简介特点:尾入头出的线性表,在一段进行插入操作,另一段进行删除操作FIFO: first int first out4项规定:[1] front 表示队头元素的下标rear 表示队尾元素下一个元素的下标[2]队空条件:front == rear[3]队满条件:front == (rear + 1) % MAX[4]更新front和rea
2016-11-26 18:12:55
483
原创 链式队列设计
一、链式队列含义:队列的链式存储实现叫做链式队列。本质:队列头 + 带头结点的链表二、数据类型的设计[1]链表结点数据类型的设计typedef int DataType;typdef struct node{DataType data; //链表结点存储数据struct node *next; //保存下一个结点的地址}LinkNode;
2016-11-26 18:10:39
750
原创 线程管理---互斥量同步机制
互斥量机制在计算机系统中有许多共享资源不允许用户并行使用,像打印机这样的共享设备被称为“排它性资源”,因为它一次只能由一个执行流访问。执行流必须以互斥的方式执行访问排它性资源的代码。互斥量(Mutex),又称为互斥锁,是一种用来保护临界区的特殊变量,它可以处于锁定(locked)状态,也可以处于解锁(unlocked)状态: 如果互斥锁是锁定的,就是一个特定的线程持有
2016-11-26 17:34:31
486
原创 线程管理之---信号量的操作
信号量机制(防止线程间运行紊乱)信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。 信号量是对某一类资源的抽象,防止使用同一类资源的
2016-11-26 16:13:26
274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人