Newlib是ANSIC库的一个实现,是一个更加精简和易于移植的版本,我在移植Newlib到CM4上的时候遇到了一个比较奇怪的问题,串口上的getchar工作不正常。对Newlib的移植比较简单的就是实现一些syscalls函数就可以了,比较重要的是以下几个函数:int _close(int file); int _isatty(int file); int _open(const char...
我的代码我做主
Newlib是ANSIC库的一个实现,是一个更加精简和易于移植的版本,我在移植Newlib到CM4上的时候遇到了一个比较奇怪的问题,串口上的getchar工作不正常。对Newlib的移植比较简单的就是实现一些syscalls函数就可以了,比较重要的是以下几个函数:int _close(int file); int _isatty(int file); int _open(const char...
FreeRTOS移植的整个过程应该来说还是比较容易的,不过,最近往CM4核上移植的时候出现了一个比较有意思的问题,这里记录一下.问题描述当开启vTaskStartScheduler()的时候,程序没有运行起来,而是跳到一个汇编里面,从代码上看是一个无限循环:portFORCE_INLINE static void vPortRaiseBASEPRI( void ) { uint32_t ul...
现在Google Chrome逐渐开始将没有加密的http网站标记为不安全的网站了,为了适应时代的潮流,我也把我的个人博客开启了https访问,以前我也做过类似的事情,用的是阿里云的证书服务,免费期是一年,并且子域名也要申请证书,搞得非常复杂,今天偶然间发现国外的一个免费证书申请网站可以直接通过命令行生成证书,真是我的爱呀,下面我们就来介绍一下具体的使用方式。
在无法翻越的伟大的墙面前,很多时候我们需要用到梯子去看外面的世界,浏览器爬梯子比较简单,而相对于原始的终端面对先进的梯子倒是有点不知所措。以前如果要在终端里面爬梯子,我一般是生成一个全局的代理规则,把代理直接加到网络出入口上,这样不管是浏览器还是终端,实际可以直接认为伟大的墙已经隐身,直接无感的透传。当然还有一种更加无感的方式,那就是将梯子架在路由上,家里的路由接管所有网络,所以路由上搞个梯...
extern是C语言中比较灵活的一个关键字,和指针一样,如果应用不当就比较麻烦,它一般用来声名一个外部变量,所谓的外部变量是指在函数或者文件外部定义的全局变量。外部变量定义必须在所有的函数之外,且只能定义一次。C语言中定义的全局变量的作用域一般是从定义位置开始到文件结束,如果其它文件需要使用这些全局变量,就需要用到extern关键字。不过最近在用extern关键字的时候遇到一个问题,这是记录一下。