作者文章归档:dongruibin

STM32上RTOS内存配置说明

1.说明

  在STM32上进行RTOS(以rt-thread为例)配置动态内存管理方式,我们需要设置一个动态内存管理的访问, 也就是管理区域的大小,起始地址等。

2.管理内存的范围

  在使用操作系统前,先看一下原始的分配情况:startup_stm32f103xe.s

; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
;   <o> S

Read more

C语言关键字volatile

1.简介

  volatile关键字,作为一个指令关键字,确保本条指令不会因为编译器的优化而省略,且要求每次
直接读取值。该关键字可以保持内存可见性,但不是保证原子性(无法知道是否有其它线程在修改该地址的值)内存可见性,是保证每次都可以读取到最新值。
  另外一个是保证有序性(这个只是保证这个变量之前的代码一定比它先执行,但是并不保证这个变量之前的代码不可以重排序)。   一个定义为volatile的变量就是说这个变量可能会意想不到的改变,这样编译器就不会去随便假设
这个变量的值,精确说,编译器优在用到这个变量的值的时候,必须每次都小

Read more

Caffe深度学习框架安装(Ubuntu14.04+cuda8.0)

Caffe深度学习框架安装(Ubuntu14.04+cuda8.0)

简述

本文主要使用的系统为Ubuntu14.04,cuda使用较新的8.0,cudnn使用cudnn7.0,仅供小白安转入参考。

系统:Ubuntu14.04 cuda:cuda8.0 cudnn版本:cudnn7.0

准备

1、硬件检查

因为我们使用了cuda,是英伟达公司搞的,所以先要保证您的显卡是N卡,而不是A卡,A卡飘过哦!

查看(Linux下):

lspci  | grep -i vga

正常:01:00.0 VGA compatible controller: NVIDIA Corporation GM1

Read more

ORB-SLAM2(单目slam、ROS环境)安装总结

本文主要是记录自己安装ORB-SLAM2的总结,之前从未写过博客,没有想过分享一下自己的探索过程。 首先slam(simultaneous localization and mapping),即时定位与地图构建。我这头是在ubuntu14.04上安装,主要是测试一下在ros上运行(indogo版本)单目slam。

一、依赖项的安装

1.1 、Eigen3安装 官网:http://eigen.tuxfamily.org/index.php?title=Main_Page g2o库依赖于eigen3。Eigen是C++中可以用来调用并进行矩阵计算的一个库。

sudo apt

Read more

Linux上进程fork和vfork

1.简介

  正在执行的一个程序或者命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用
一定的系统资源。
linux上进程有5中状态:

1.运行(正在运行或在运行队列中等待)
2.中断(休眠中,在等待某个条件的形成或接受到信号)
3.不可中断(收到信号不唤醒和不可运行,进程必须等待直到有中断发生)
4.僵死状态(进程已经终止,但进程描述符存在,直到父进程调用wait系统调用后释放)
5.停止(进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行)

查看系统当前进程

ps aux(查看当前时间点进程信息)
ps aux | grep xx

Read more

Linux上安装python3

1.说明

  本文记录从源码安装python3指定版本,安装python3之前切记安装好必要的依赖,例如openssl,如果没有
openssl,后续使用python3导入ssl模块会报问题

2.安装

2.1 安装依赖选项

sudo apt-get install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

要保证openssl安装成功。如果上述ssl安装不成功,可以源码进行安装。
Openssl下载路径:openssl下载

2.2 从源码安

Read more

RT-Thread上内存分配分析之一

1.简介

  内存分配在RTOS上还是较为常见的,除了一些特殊场合使用的RTOS(不允许malloc,free操作,防止内存碎片), 实际产品中,使用分配内存机制还是较常用。
  RTOS上的内存管理方式,分为常见的动态内存堆管理,和静态内存池管理,其中动态内存管理又分为常见的,小内存分配算法,多内存分配算法(memheap),
slab分配算法等等。RT-Thread上分配算法可以在conf中配置。

RT_USING_SMALL_MEM_AS_HEAP        小内存分配算法
RT_USING_MEMHEAP_AS_HEAP          

Read more

Linux上环境变量

1.简介

在Linux上一样有很多和windows上一样的环境变量,在Linux上环境变量是用来定义系统运行环境的一些参数,
比如常见的HOME,SHELL等。

2.参考表格

变量名称 作用
HOME 用户的主目录
SHELL shell解释器
PATH 定义命令行解释器搜索用户执行命令的路径
EDITOR 用户默认的文本解释器
RANDOM 生成一个随机数字
LANG 系统语言、语系名称
HISTSIZE 输出的历史命令记录条数
HISTFILESIZE 保存的历史命令记录条数
PS1 Bash解释器的提示符
MAIL 邮件保存路径
LIB

Read more