基于ARM GCC bare metal 坏境搭建

ARM GCC本身确实比较方便,自身集成了一些标准的C库,用来做开发非常方便,但是对于Flash比较紧张的MCU来讲,标准库还是有一些大,比如最近用到的一个MCU,flash只有64K,一个含有标准库的简单程序产生的二进制文件就到了将近30K左右,这个是不能忍的,于是就要通过删除标准库来缩减程序大小,怎么说呢,ARM GCC用标准库什么参数也不用加,但是如果想省掉标准库可就麻烦很多了。

继续阅读 »

Virmach小鸡搭梯子

最近有同事问搭梯子的事情,因为本人对这方面折腾的比较多,而最近又有了一些新的shadowsocks配置,所以就在这里写篇日志记录一下,这里主要介绍在virmach上搭建shadowsocks服务,并配置比较新的加密算法chacha20-ietf-poly1305的基本过程。

继续阅读 »

Kinetis LPI2C 模块简介

Kinetis LPI2C模块支持标准、快速、高速和超高速几种不同的传输模式。该模块也支持SMBus功能,也支持4线模式。主机模式支持:4字长度的命令/发送FIFO;4字长度的接收FIFO;FIFO中命令自动等待空闲时传输;命令FIFO支持发送开始和终止信号;支持FIFO空时自动发送停止信号;支持主机外部触发发起传输;支持数据匹配;支持各种状态检测和超时检测。从机模式:支持7bit和10bi...

继续阅读 »

ARM newlib使用中遇到的问题

Newlib是ANSIC库的一个实现,是一个更加精简和易于移植的版本,我在移植Newlib到CM4上的时候遇到了一个比较奇怪的问题,串口上的getchar工作不正常。对Newlib的移植比较简单的就是实现一些syscalls函数就可以了,比较重要的是以下几个函数:int _close(int file); int _isatty(int file); int _open(const char...

继续阅读 »

FreeRTOS移植遇到的一点问题

FreeRTOS移植的整个过程应该来说还是比较容易的,不过,最近往CM4核上移植的时候出现了一个比较有意思的问题,这里记录一下.问题描述当开启vTaskStartScheduler()的时候,程序没有运行起来,而是跳到一个汇编里面,从代码上看是一个无限循环:portFORCE_INLINE static void vPortRaiseBASEPRI( void ) { uint32_t ul...

继续阅读 »