ubuntu
文章平均质量分 75
uav360
这个作者很懒,什么都没留下…
展开
-
Ninja - chromium核心构建工具Jul 28, 2014
转载:https://www.cnblogs.com/x_wukong/p/4846179.html?from=timeline&isappinstalled=0缘由经过上次对chromium核心代码的初步了解之后,我转头去研究了一番ninja,并对其进行了一些改造(爱折腾的,都是小NB)。今天就来简单介绍一下ninja及其使用。(BTW: 细节的内容,大家阅读ninja 的手册就好了,我这里不会关注。)ninja是一个专注于速度的小型构建系统(Ninja is a small build s转载 2021-06-19 18:44:40 · 165 阅读 · 0 评论 -
12.Ubuntu下开发STM32--HardFault,div0
看了creep发的一篇帖子https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=602444&highlight=hardfault,讲解的是如何找出程序中的HardFault。creep的帖子中提到了一个老外的链接http://blog.feabhas.com/2013/02/developing-a-generic-hard-fault-handler-for-arm-cortex-m3cortex-m4/,转载 2021-06-19 18:46:47 · 236 阅读 · 0 评论 -
11.Ubuntu下开发STM32--使用malloc
Ubuntu下开发STM32已经接近尾声。如果不出意外的话,这篇将会是最后一篇了。突然有点心痛,毕竟,在也没有机会这么明目张胆的传图片,刷金币了。Newlib申请内存的机制这次介绍的是Newlib下的malloc。不同与keil mdk下的malloc。两者的实现机制是不同的。keil mdk是在汇编文件中改一个数值,用来设置堆的大小。今后的所有malloc申请的内存都在这个堆中。堆的大小是在编译的时候确定的,预先放入bss段中。而Newlib使用的是sbrk的机制。只要sbrk的申请的地址还没到当前s转载 2021-06-19 18:46:19 · 575 阅读 · 0 评论 -
10.Ubuntu下开发STM32--再谈exit
在笔记6—使用串口Part2(https://www.stmcu.org.cn/module/forum/thread-603909-1-1.html)中,我们简单的介绍了一下exit。在windows或者linux操作系统中,main的返回值是有意义的,类型为int。这个返回值实际上是返回给操作系统的。0表示程序正常终止,其他非零表示程序异常终止。在使用ST固件库提供的启动文件和syscalls.c文件之后,如果程序中主动调用exit,能跳转到_exit系统调用中。如果main中使用return,并不能转载 2021-04-01 14:51:31 · 210 阅读 · 0 评论 -
09.Ubuntu下开发STM32--浮点运算
cortex-m4内核具有浮点运算单元。如果不使用的话,还是有点浪费的。软浮点gcc在默认的情况下使用软浮点运算。相关浮点运算测试的代码在softfloat.zip中。为了反汇编观察代码,这里特意去掉了Os优化。使用Newlib-nano库。使用make sram,sudo make burns下载到SRAM中运行。从输出的时间间隔上来看,软件浮点也是挺快的。这里我们反编译一下main.o的代码看一下。float add(float a,float b,float c ){ return转载 2021-04-01 14:50:35 · 423 阅读 · 0 评论 -
08.Ubuntu下开发STM32--使用printf
开始尝试使用标准库的一些东西的时候,也就意味着我们的linux环境下开发STM32的教程已经接近尾声了。标准库的使用我们这里仅仅介绍使用printf和malloc。syscalls想使用标准库,我们需要自己完成一些系统调用。像keil mdk下使用printf一样,至少要完成fputc和fgetc。然而newlibc下使用printf却不这么简单。并不是一个__io_getchar, __io_putchar能够完成的。幸好,ST的固件库中有我们使用的大部分源码。都在TrueStudio的模板下。大家可转载 2021-04-01 14:49:38 · 433 阅读 · 0 评论 -
07.Ubuntu下开发STM32--使用串口Part2
在上一篇Part1的时候,我们说了有个bug,也就是中断向量表的问题。其实这个问题在第4节—在SRAM中运行程序的时候就存在。只不过我们的程序中没有使用中断,也就导致这个bug没有发现。如果我们在上一节的代码中尝试将程序下载到SRAM中运行的时候,也就是make sram,sudo make burns,这样串口只能发送。不能接收。究其原因还是中断惹得祸。我们使用st-flash工具直接将代码下载到SRAM中,st-flash在下载完之后,会尝试更改pc到Reset_Handler。并运行第一行代码。但是转载 2021-04-01 14:48:43 · 228 阅读 · 0 评论 -
06.Ubuntu下开发STM32--使用串口Part1
可能觉得使用串口很简单,无非就是初始化GPIO,初始化串口。接着发送—检测是否成功。表面上看来是很简单的问题。然而,我要说的并不是这些。我要说的是volatile和中断向量表的问题。在其中配合一点gdb调试。使用ringbuffer这里的串口使用非缓冲发送,ringbuffer中断缓冲接收的方式。先来看看ringbuffer。ringbuffer是一个特殊的队列,FIFO。struct ringbuffer{ uint8_t *bf; int len; int cou转载 2021-04-01 14:47:24 · 505 阅读 · 0 评论 -
05.Ubuntu下开发STM32--SRAM中运行程序
st-flash能够将代码下载至STM32的任何位置。甚至是SRAM。在下载完毕之后,不用我们手动设置,他自动的设置pc至你下载代码的位置,并从pc处开始运行。反汇编先来反汇编我们点亮ledhttps://www.stmcu.org.cn/module/forum/thread-603787-1-1.html的代码。使用arm-none-eabi-objdump -d blink.elf生成反汇编代码,如下图所示:等等,为什么第一条指令的地址是0x0800_0188?我们的代码不是应该从0x0800转载 2021-04-01 14:46:17 · 345 阅读 · 0 评论 -
04.Ubuntu下开发STM32--优化程序大小
在上一篇帖子(https://www.stmcu.org.cn/module/forum/thread-603787-1-1.html),我们使用gcc和Makefile成功的点亮了一盏led灯。却发现程序有点大,占用了6K多的代码空间。相比keil mdk下的代码量,这个确实大的多。这并不是我们使用的gcc的原因,也不是gcc链接newlibc库的原因。而是我们没有选择任何优化的参数。(下图是未经任何优化的代码大小)-Os优化说到代码的优化,在单片机中,由于flash空间过小,我们并不会过多的考虑优转载 2021-04-01 14:44:58 · 514 阅读 · 0 评论 -
03.Ubuntu下开发STM32--灯,等灯等灯
在Ubuntu下开发STM32并不简单。这里说的不简单是上手困难。不太适合新手。对一个刚开始学习STM32的人来说,如果一开始就使用Ubuntu开发,我觉得并不是一个好的注意。对于初学者来说,如果你的代码出现问题,你既要考虑是不是固件库的问题,又要考虑是不是Makefile的问题。还要考虑newlib(arm-none-eabi-gcc使用的库)系统调用的问题。这么多的问题加在一块,足够你想放弃学习了。因此,对于初学者来说,就不要瞎折腾了。还是老老实实的使用keil mdk,iar等一些IDE,从0开始学转载 2021-04-01 14:43:43 · 359 阅读 · 0 评论 -
02.Ubuntu下开发STM32--我叫Makefile
回忆我们在windows环境下使用IDE进行开发,只要一股脑的将多有的源文件添加到工程中,点一个按钮,IDE就会为我们生成可执行文件。但是期间发生了什么?我们无从得知。IDE让我们编程简单的同时,也让我们变得更加傻瓜。在linux下编程,最常用的莫过于gcc了。比如我们编译main.c生成main.exe(在linux下,叫做main.out)或许更好些。只需要在控制台下敲下:$ gcc -Wall main.c -o main.out-Wall是允许提示所有的警告。更多参数解释请参考http://转载 2021-04-01 14:42:30 · 373 阅读 · 1 评论 -
01.Ubuntu下开发STM32--软件搭建
记事本用习惯了,论坛写帖子的时候动不动Ctrl+S一下。。。在Ubuntu下开发STM32,两个常用软件是必须的。我们的交叉编译器,arm-none-eabi-xxx。st-link的驱动。这里的st-link并不像我们windows下面用的那样,一路点Next就好了。这里我们需要从github上面下载源码,自己编译,安装。st-link不仅仅是我们下载代码的工具,更是我们使用gdb调试的基础。linux对USB虚拟串口的支持linux下自带虚拟串口的驱动。不需要手动安装。linux对串口的命转载 2021-04-01 14:41:07 · 366 阅读 · 0 评论 -
Ubuntu查看文件和文件夹大小命令
用df命令查看分区情况df -h命令结果参考如下:Filesystem Size Used Avail Use% Mounted onudev 2.0G 0 2.0G 0% /devtmpfs 396M 5.9M 390M 2% /run/dev/sda1 1004G 25G 929G 3% /tmpfs 2.0G 272K 2.0G 1% /dev/shmtmpfs原创 2021-03-30 21:37:29 · 2589 阅读 · 1 评论 -
ubuntu16.04环境下vscode终端排版错乱解决方法
测试ubuntu版本:Linux version 4.8.0-36-generic (buildd@lgw01-18) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #36~16.04.1-Ubuntu SMP Sun Feb 5 09:39:57 UTC 2017测试vscode版本:Version: 1.54.2Commit: fd6f3bce6709b121a895d042d343d71f317d74e7Date原创 2021-03-16 22:11:56 · 459 阅读 · 0 评论 -
ubuntu 下查看网卡流量速度
参考:http://blog.chinaunix.net/uid-20718384-id-3310157.html1. sar命令可实时查看网卡速度sudo apt-get install sysstatsar -n DEV 1DEV 表示查看网络链接速度1表示 每隔一秒刷统计一次速度2. 可以在tagsmanger(系统监视器)上用图形界面查看当前网卡速度gnome-system-monitor3. dstat命令sudo apt-get install dstatalias ds转载 2021-03-10 14:55:45 · 1756 阅读 · 0 评论