第007课 裸机开发步骤和工具使用(SourceInght NotePad++使用)
原文地址: http://wiki.100ask.org
001节_裸机开发步骤简介
回忆大学在VC6.0上面学习C语言,操作大致流程如下:
x86平台,Windows应用程序:建立工程/项目,编辑源码,编译代码(编译器:VC6.0),运行。
在Ubuntu上学习C语言,操作大致流程如下:
x86平台,Ubuntu应用程序:编辑源码,编译代码(编译器:gcc),运行。
两者是几乎一致的。
名词解释:
- gcc:
gcc是linux系统下主要的编译软件, gcc的全称是GNU编译器套件(GNU Compiler Collection), 除了可以编译c语言开发的程序外,还可以开发C++、Java等多个语言的程序。 GCC的初衷是为GNU操作系统专门编写的一款编译器。
使用gcc的原因:功能强大、稳定、开源免费。
1)gcc -v
查看gcc的版本,从而验证了gcc编译器正常。
不论你使用哪一个版本的gcc,只有后面能够正常编译就可以了。
2)gcc -o 输出文件名 源文件
o:output
- 交叉编译模式:
通常编译嵌入式程序的平台成为宿主机(如:PC的ubuntu系统,CPU架构为X86架构), 运行嵌入式程序的平台成为目标机(如:某款ARM开发板,CPU架构为ARM架构)。 在X86平台编辑和和编译器arm-linux-gcc编译ARM架构的程序, 两者属于不同的架构平台,从而属于交叉编译模式。 然后将程序烧写到ARM开发板中(下载方式有:JTAG、USB、SD卡、网络等多种方式), 然后在开发板上运行该程序。
- 编辑器: 推荐使用windows平台的source insight和notepad。 source insight在查看代码、编辑代码等功能时非常好用。
- 编译器 推荐使用arm-linux-gcc arm-linux-gcc是基于linux平台的arm编译器。它是开源免费的编译器。 arm-linux-gcc功能强大、稳定、支持的arm芯片众多、更新速度快。
入门误区:使用ads、MDK
ads(停止更新)、MDK,是windows平台的编译器,功能较弱。
1)只适合个人或者小团队的开发,不适合于中型、大型团队的协作开发。
2)是收费软件。
002节_source insight代码查看工具的使用
编辑器
推荐使用windows平台的source insight和notepad。
source insight在查看代码、编辑代码等功能时非常好用。
source insight针对:c文件、h文件、ARM汇编文件
notepad针对:其他文件,如Makefile(简单理解为:指明了要编译哪些源文件、指定编译后的输出文件名)
source insight是收费软件,但是这个软件可以免费35天。 版本:3.5
安装包:自己百度一下”source insight3.5”
source insight常用设置:
1.增加文件类型
options-->documents options中,将c source file的文件过滤设置为*.c;*.h;*.S
2.新建项目(新建工程)
project-->new project,然后将相应的文件添加到该项目中。
3.字体的设置(解决中文乱码)
options-->documents options中,将screen fonts设置为:宋体、常规、12、GB2312.
使用alt+F12来调整字体的等宽。
4.说明一下source insight的窗口
项目窗口:指明该项目中有哪些文件。 主窗口:显示当前打开文件的文件内容。 符号窗口:显示了当前打开文件的函数名、结构体名、宏定义等等。 上下文窗口:光标放在某个函数上(变量上、宏定义上),在下面的上下文窗口就可以看到相应的定义。
5.显示行号
view-->line number
6.快速跳转到某一行
工具栏中有一个go to line。
7.高亮关键词
光标放在关键词上,然后右键菜单—>highlight word
8.查看函数定义位置
光标放在函数上,然后右键菜单—>jump to defintion,或者ctrl + 鼠标左键。 go back (alt + ,)回到上一次光标所在位置,或者使用工具栏中的向左箭头。 go forward(alt + .)回到下一次光标所在位置,或者使用工具栏中的向右箭头。
9.查找
右键菜单-->lookup reference,或者ctrl + / 。
003节_notepad编辑器和二进制文件查看工具
下面介绍两个免费的工具: 文本编辑器工具[https://notepad-plus-plus.org/ Notepad++]和二进制查看工具[https://www.hhdsoftware.com/free-hex-editor Free Hex Editor Neo]。
Notepad++使用技巧:
- 按住Ctrl+鼠标滚轮,可以缩放文本内容大小;
- 查看c语言文件时,双击变量,即可在高亮整个文本中的该变量;
- 查看c语言文件时,光标放在任一括号处,即可高亮整个括号范围;
- 快捷键“Ctrl+F”,打开查找窗口,可搜索所需字符;
Free Hex Editor Neo使用技巧:
- 打开hex二进制文件,默认每行显示16个数,即0x00-0x0f;
- 在菜单栏的View->Offset可设置左边偏移的显示进制;
- 在菜单栏的View->Display As可设置当前数据的显示进制;
- 在菜单栏的View->Columns As可设置当前每行显示多少数据;
- 在菜单栏的View->Group By可设置当前数据显示的数据类型;
- 【Jfinal源码】第一章 com.jfinal.core.JFinalFilter(1)
- 【ehcache】 timeToLiveSeconds 和 timeToLiveSeconds 的区别
- 升级 CentOS7 、Redis 3.2.x 的问题
- AngularJS 中使用Swiper制作滚动图不能滑动
- JAVA服务端配置允许跨域请求
- CentOS mysql配置主从复制
- Quartz依赖数据库表
- Spring Security Oauth2.0 实现短信验证码登录
- 【Spring Cloud】Redis缓存接入监控、运维平台CacheCloud
- 基于Redis实现分布式应用限流
- Jasypt : 整合spring boot加密应用配置文件敏感信息
- Eureka:扩展ClientFilter实现服务注册自定义过滤
- 【系统日志】log4j配置学习总结
- 【译】MySQL char、varchar的区别
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python-opencv】图像平滑
- 逃逸安全的模板沙箱(一)——FreeMarker(上)
- JVM面试题
- 【python-opencv】形态转换
- Netgear Nighthawk R8300 upnpd PreAuth RCE 分析与复现
- 【python-opencv】图像梯度
- 七夕又来了,给女朋友做个动态二维码
- 【python-opencv】canny边缘检测
- python的日志模块案例
- 【python-opencv】图像金字塔
- Linux之inodes溢出问题
- volitale 怎么保证可见性
- 企业多人协同办公软件-Confluence 7.6体验
- 【python opencv】轮廓属性
- Go 语言学习之 reflect