- 博客(49)
- 收藏
- 关注
原创 直流电磁铁的设计计算
直流电磁铁的设计计算设计的电磁铁需要达到以下性能参数: 推力 最大行程 工作电压 工作电流 195N 2.0mm 28V 3A2 设计流程2.1 设计推力的确定要求在工作时电磁铁推力不小于195N。一般电磁铁在设计时安全系数取1.2。因此设计推力Fn=195∗1.2=234NFn=195∗1.2=234NF_n=195*1.2=2...
2018-04-19 15:43:43
33129
3
原创 uC/OSII 和 uC/OSIII 系统特性对比
1 uC/OS系列的发展历史uC/OS (Micro-Controller Operating System)是一个可以基于ROM运行的、可裁剪的、抢占式、实时多任务操作系统,具有高度可移植性,特别适合于微处理器和控制器,是目前应用最广泛的实时操作系统(RTOS)。uC/OS最早出自于1992年美国嵌入式系统专家Jean J.Labrosse在《嵌入式系统编程》杂志的5月和6月刊上刊登的文...
2018-04-04 17:21:56
4065
原创 Keil编译警告:function "assert_param" declared implicitly的解决方法
1 问题描述新建STM32的keil工程,在编译时出现警告“..\FWLIB\src\stm32f10x_rcc.c(273): warning: #223-D: function “assert_param” declared implicitly”,接下来一堆警告和错误。 出错的原因:函数“assert_param”未声明。assert_param2 问题分析函数asse...
2018-03-27 14:04:32
22659
8
原创 让C程序跳转到绝对地址0x100000处执行
让C程序跳转到绝对地址0x100000处执行写了这么多年C程序,好像还没这样做过,我的第一反应是可以通过在C语言中嵌入汇编跳转语句实现。这个问题其实还是蛮有意思的,于是决定研究一番。网上一顿搜索后发现好多人都研究过这样的问题。广大网友的智慧是采用函数指针的方式实现这一操作。 具体来说先定义一个函数指针,然后把函数指针的地址设定为程序要跳转的地址,也就是问题中的0x1...
2018-03-27 11:08:08
11625
2
转载 STM32 内核复位 与 系统复位 区别及程序实现
1 写在前面某些系统允许复位,但对外设又有特殊要求:某一个IO状态不能因为复位而改变,某一个定时器计数器不能改变等。例子:A系统通过一个IO控制B系统的电源,而这个IO置高时才开启B系统的电源。正常工作过程中,B系统只有收到A系统关机命令任务才会进行关机(也就是说不能掉电关机),而A系统在工作过程中有复位的需求。这个时候如果使用常规的复位方式,就会复位IO,不符合要求。如果有一种方...
2018-03-23 18:34:32
12065
1
原创 STM32 固件库移植出错——“No section matches selector - no section to be FIRST/LAST”
1 问题描述最近项目上需要用到STM32F103VET6芯片。之前一直使用的是8年前的库,决定更新为最新版的固件库。在建立新工程编译时出现了以下错误:“..\OBJ\NH3N STM32.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.” 2 问题分析2.1 问题定...
2018-03-21 14:56:58
38191
12
原创 Linux动态修改内核参数命令——sysctl
命令描述sysctl可以动态修改内核的参数。可以修改的参数可以在/proc/sys/目录下查看,包含一些TCP/IP堆栈和虚拟内存系统的高级选项。经验丰富的人员可以通过合理配置这些参数来提高系统的性能。采用sysctl既可以读又可以写系统参数。命令格式 sysctl (选项) (参数)例子: sysctl [-n] [-e] variable … sys...
2018-03-05 15:11:33
9396
原创 linux 出错 “INFO: task xxxxxx: 634 blocked for more than 120 seconds.”的3种解决方案
1 问题描述最近搭建的一个linux最小系统在运行到241秒时在控制台自动打印如下图信息,并且以后每隔120秒打印一次。 仔细阅读打印信息发现关键信息是“hung_task_timeout_secs”,第一次遇到这样的问题,首先百度… 通过翻看多个网友的博客,发现这是linux kernel的一个bug。大家对这个问题的解释也都比较一致,摘抄一段:By default Linux...
2018-02-26 15:10:47
44829
5
原创 make all、make clean、make install 等命令的来源
在命令行输入make命令后,会查找当前目录下的Makefile文件来执行,一切都是自动运行的。有时候Makefile中有多个程序需要编译,这时可以使用“make all”来编译所有的程序。当然也可以使用“make 程序名”来单独编译某一个文件。既然make可以指定所有Makefile中的目标,那么也包括“伪目标”。我们可以根据这种性质来让我们的Makefile根据指定的不同目标来完成不同的任务...
2018-02-22 16:55:58
43623
原创 linux软件包安装命令——apt-get
apt-get是linux中APT软件包的管理工具。采用shell命令行的方式完成软件的安装、更新、卸载等操作。1 语法apt-get (选项) (参数)选项: -c —— 指定配置文件 -o —— 直接指定配置参数参数: 管理指令:对APT软件包的管理操作 软件包:指定要操控的软件包2 软件库在使用apt-get 命令之前...
2018-02-22 11:19:47
33834
1
转载 Linux设备树语法详解
1 概念 Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离。在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。引入了设备树之后,驱动代码只负责处理驱动的逻辑,而关于设备的具体信息存放到设备树文件中,这样,如果只是硬件接口信息的变化而没有驱动逻辑的变化,驱动开发者只需要修改设备树文件信息,不需要改写驱动代码。比如在ARM L...
2018-02-13 08:52:42
506
原创 Linux网络监控命令——netstat
命令名称netstat:打印网络连接、路由表、接口状态、伪链接、多播组。概要 netstat [address_family_options] [–tcp|-t] [–udp|-u] [–raw|-w] [–listening|-l] [–all|-a] [–numeric|-n] [–numeric-hosts][–nume
2018-02-02 15:52:43
1581
转载 Linux的硬链接和软链接——从inode了解Linux文件系统
1 Linux 的文件与目录现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用。在 UNIX 系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式。换言之,UNIX 系统中除进程之外的一切皆是文件,而 Linux 保持了这一特性。为了便于文件
2018-02-01 17:06:05
864
原创 busybox安装出错:“arm-none-linux-gnueabi-gcc: not found”
1 软件环境Ubuntu 12.04.1 LTS busybox 1.21.1 arm-linux-4.4.12 问题描述最近在制作linux最小系统的时候需要用到busybox软件,在编译busybox软件时报错“arm-none-linux-gnueabi-gcc: not found”。说明在编译时没有找到交叉编译工具。3 解决办法ubuntu系统中没
2018-01-16 15:38:03
4744
原创 ncurses 安装出错:“/bin/sh: 1: -I../C++: not found”
1 软件环境Ubuntu 12.04.1 LTS ncurses 5.92 问题描述最近需要把mysql移植到开发板上,在交叉编译mysql源码时需要用到ncurses。在ubuntu上安装ncurses时出错,提示“/bin/sh: 1: -I../C++: not found”。3 解决办法在当前ncurses 5.9目录中有一个C++目录,里边有一个Makefile
2018-01-15 18:16:28
3390
1
原创 Linux线程间同步 —— 读写锁(reader-writer lock)
1 读写锁简介互斥量要么是加锁状态,要么是不加锁状态,而且一次只有一个线程对其进行加锁。读写锁可以有3种状态:读加锁状态、写加锁状态和不加锁状态。一次只有一个线程可以占有写模式读写锁,但是可以有多个线程同时占有读模式的读写锁。因此读写锁比互斥量具有更高的并行性。当读写锁处于写加锁状态时,所有试图对这个锁加锁的线程都将被阻塞。当读写锁处于读加锁状态时,所有试图以读模式对这个锁访问的线程都将得
2018-01-09 19:45:22
2318
原创 重装source insight 出现问题——“An invalid Source Insight serial number was detected.”
1 问题描述在重新安装Source Insight 3.50.0076 时,安装完成后打开软件。弹出如下图所示的对话框。提示“An invalid Source Insight serial number was detected.”,也就是说软件检测到非法序列号。点击“确定”按钮,软件闪退。 2 解决办法首先想到的是之前安装的软件没有卸载干净,于是使用360软件管家卸载之后进行了
2018-01-08 18:00:26
1571
原创 Linux线程间同步 —— 互斥量(mutex)
1 互斥量简介互斥量是Linux线程间数据同步最主要和最常用的手段,能够确保同一时间只有一个线程访问数据。互斥量本质上就是一把锁,当线程需要访问数据时就启用互斥量(加锁),访问完成后再释放互斥量(解锁)。对数据加锁之后,其他线程不能访问该数据,当然了也不能对该数据再次加锁,这样就保证任何时刻只有一个线程访问共享数据。如果线程尝试对一个已经加锁的数据再次加锁,那么将会被阻塞,直到该数据解锁为
2018-01-08 16:32:07
1155
转载 Linux进程间通信 —— 共享内存(上)
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,这
2017-12-25 14:07:27
579
转载 Linux进程间通信 —— 信号(上)
详细介绍linux进程间通信——信号的本质、来源、信号种类、进程对信号的响应、信号的发送、信号的安装、信号集及操作函数、信号阻塞与信号未决等相关知识。
2017-12-20 15:03:53
371
转载 Linux进程间通信——有名管道 FIFO 详解
详细介绍了FIFO相关的关键概念、FIFO的创建、FIFO的打开规则、FIFO的读写规则,并对打开规则及读写规则进行了实例程序验证。
2017-12-01 00:13:46
899
转载 Linux进程间通信 —— 6种机制简介
首先对Linux进程间通信(IPC)的历史进行简单介绍,然后对Linux IPC的6种机制进行简单介绍。
2017-11-23 09:39:43
767
翻译 如何查找出Linux使用的shell版本号
当在linux系统中安装有多个shell且需要经常切换时,如何快速的查看当前使用的shell及版本号。
2017-10-22 22:20:38
23417
原创 如何让keil 支持malloc()、calloc()、free() —— MicroLIB 简介和使用
在keil中使用malloc()函数来动态分配内存,返回了分配内存的首地址,但是却无法给内存赋值。同样的程序使用linux GCC编译器编译并运行没有任何问题。因此求助万能的网。经过一番查阅,原来keil中如果需要使用malloc()、calloc()、free()等函数,需要开启MicroLIB。1、什么是MicroLIB MicroLIB是高度优化的C标准库,主要用...
2017-07-28 11:43:40
8951
原创 linux系统ubuntu环境下修改MySQL (V5.7.18)的密码
linux系统ubuntu环境下修改mysql (V5.7.18)的密码
2017-07-02 22:54:57
457
原创 Altium Designer 16 导线、焊盘报错 Clearance Constraint、Short-Circuit
Altium Designer 16 和 protel 99se 文件不兼容导致导线、焊盘报错 Clearance Constraint、Short-Circuit
2017-04-10 15:34:52
27546
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人