专注Linux驱动开发、内核研究。
分类: 嵌入式
2014-10-11 10:40:36
往Project里面添加文件通常的做法是Add All或者Add Tree,但对于BSP代码来说,有更好的方式,那就是Add from list。
如果把Uboot/Linux Kernel所有文件添加进来,阅读过程中会遇到一些障碍(如:1.内核需要支持不同的架构,会遇到很多同名函数 2.搜索速度变慢,影响阅读效率)。
可以通过解析uboot的.depend或linux kernel的*.cmd来筛选出实际编译的文件,再通过source insight的Add from list功能添加。
这里以建立Linux kernel工程为例说明:
#执行脚本
./get-kernel-file.sh kernel_build_dir kernel_src_dir
运行完后会生成file_list.txt文件
kernel_build_dir:内核编译时存放中间文件(如.o、.cmd文件 )的目录,默认和kernel_src_dir是同一目录,可以通过设置KBUILD_OUTPUT环境变量改变。
kernel_src_dir:内核源文件目录。
例如:
cd linux-3.0.8
./get-kernel-file.sh ./ ./
add from list选择file_list.txt添加即可
很多BSP代码,由于可配置性和跨平台性,当中有大量的预编译宏。阅读过程中容易被分支代码干扰,Edit Condition功能可以解决这类问题 设置后无效的代码就会变灰 而且搜索的时候也可以选择跳过这些无效代码(inactive code)
这里以Linux kernel工程为例说明:
添加Quicker.em文件,打开autoconf.h并全选 运行ScanAutoconfFile宏 这样#define CONFIG_* 1的宏都被设置为1了。
在linux kernel根目录运行 ./linux_kernel_condition_parse|sort|uniq > condition.c
将condition.c文件添加到工程中,添加文件后需重建工程 Project->Rebuild Project
由于linux_kernel_condition_parse解析程序写的不完善,需手动确认condition.c里面的宏是否有定义,将有定义的宏删除。
全选condition.c的内容 运行ScanConditionFile宏 这样CONFIG_* 0的宏都被设置为0了。
Source Insight默认用的不是等宽字体 看起来可能不习惯 网上说选上"view --> draft view"即可 但是后来发现有些特性没了(如:1. goto语句的箭头消失了 2.} ? end ... 之类的提示没了)
help里面draft view选项的解释是
The Draft View command on the View menu toggles the draft view mode on and off. When draft mode is on, almost all syntax formatting is suppressed, except for color changes.
All text is displayed using the “Draft View” style, which can be edited with the Style Properties dialog box. The “Draft View” style is preset to use a monospaced font (Courier New).
即Options->Preferences->Syntax Decorations的设置都变得无效了 那么可以换一种思路,自己手动设置为Courier New字体而不用draft view选项
网上搜索到windows7下设置Courier New字体的一个方法
1) “控制面板:--->“字体”--->找到Courier New,然后选中该字体,点击上面的显示:
2) 然后重启source insight,你就能看到这个选项了,一定要重启哦。
3) Options->Document Options->Screen Fonts->Courier New
Options->Document Options
Editing Options框中
Tab width设置为2
勾选Expand tabs(这样,按tab键、等价于输入2个空格)
这个选项设置依据个人喜好
1) Options->Preferences->Typing卡,勾掉下面两项:
Typing tab indents line,regardless of selection,空行按tab无法前进、不用选中内容tab即可前进
Typing tab replaces current selection
2) Options->Document Options选择合适的文件类型,点击右边中间的Auto Indent钮,在弹出的框中,左边一定要点Smart,右边有两个复选框Indent Open Brace和Indent Close Brace,具体效果可以看SIS的HELP。按照部门里的编程风格要求,最方便的就是把两个复选框都取消掉,然后点OK。
做底层开发时候,有时候需要看汇编代码。以.S为例说明如何添加,Options->Document Options->x86 Asm Source File 右边的File filter: 加上*.S
然后左下角的Parsing 选择C Language,这样就会以C语法解析该类型文件 语法看起来就不会一团黑了
接着就可以往工程里添加该后缀的文件了。
Options->Preferences->Typing->Auto Completion框,勾掉Use automatic symbol completion window(这里是SIS的全局设置)
Options->Document Options->Editing Options框中,勾掉Allow auto-complete(针对特定文件类型的局部设置)
上面两项必须全部勾选,才能启用Auto Completion功能
Options->Key Assignments
通过关键词save 找到save all,更改快捷键为ctrl+shift+a
通过关键词select找到select all, 更改快捷键为ctrl+a
Options->Preferences->Typing->After pasting, select:at end of pasted text
Smart Rename命令、快捷键是Ctrl+’,是上下文敏感的全局搜索替换。它可以智能地重命名全部项目文件中的一个标示符。Source Insight的搜索索引(search index)使得搜索过程进行地非常快。而且,使用Smart Rename所做的替换会被记录在Search Results窗口中,每一条替换记录旁有一个Source Link链接到替换发生地文件。
Smart Rename可以用来重命名标记(symbol)。如果勾选了Smart Reference Matching选项,Smart Rename就只在正确的上下文范围内进行重命名。它可以智能地重命名全部项目文件中的一个标示符;它可以重命名函数本地变量,类或结构体成员、函数。
Options->Custom Commands
点击Add, Command name设为svn log
Run设为
"D:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:log /path:%f /notempfile /closeonend
然后点Keys,选择刚添加的命令,按Assign New Key设定自己的快捷键,我的就设为 Alt+Shift+L
同样的添加svn diff命令
"D:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:diff /path:%f /notempfile /closeonend
快捷键设置为 Alt+Shift+D
筛选了一些常用的 不常用的这里没有列出来
Application: Refresh Relation Window : Alt+R(custom)
Edit: Complete Symbol : Ctrl+E
Edit: Copy Line : Ctrl+K
Edit: Cut Line : Ctrl+U
Edit: Paste Line : Ctrl+P
Edit: Insert Line Before : Ctrl+I
Edit: Redo : Ctrl+Y
Edit: Replace... : Ctrl+H
Edit: Smart Rename... : Ctrl+'
File: Open... : Ctrl+O
Menu: Activate Window Menu : Alt+W(然后可以通过数字和字母进行窗口选择)
Navigation: Activate Symbol Window : Alt+L
Navigation: Beginning Of Line : Home
Navigation: Block Down : Ctrl+Shift+]
Navigation: Block Up : Ctrl+Shift+[
Navigation: Bottom Of File : Ctrl+End
Navigation: End Of Line : End
Navigation: Function Down : (KeyPad) +
Navigation: Function Up : (KeyPad) -
Navigation: Go Back : Alt+,
Navigation: Go Back Toggle : Alt+M
Navigation: Go Forward : Alt+.
Navigation: Go To Line... : F5, Ctrl+G
Navigation: Go To Next Change : Alt+(KeyPad) +
Navigation: Go To Next Link : Shift+F9, Ctrl+Shift+L
Navigation: Go To Previous Change : Alt+(KeyPad) -
Navigation: Jump To Link : Ctrl+L
Navigation: Jump To Match : Alt+]
Navigation: Make Column Selection : Alt+L Click
Navigation: Paren Left : Ctrl+9
Navigation: Paren Right : Ctrl+0
Navigation: Scroll Half Page Down : Ctrl+PgDn, Ctrl+(KeyPad) PgDn, (KeyPad) *
Navigation: Scroll Half Page Up : Ctrl+PgUp, Ctrl+(KeyPad) PgUp, (KeyPad) /
Navigation: Select Block : Ctrl+-
Navigation: Select Char Left : Shift+Left
Navigation: Select Char Right : Shift+Right
Navigation: Select Function or Symbol : Ctrl+Alt+F(custom)
Navigation: Select Line : Shift+F6
Navigation: Select Line Down : Shift+Down
Navigation: Select Line Up : Shift+Up
Navigation: Select Match : Alt+=
Navigation: Select Paragraph : Ctrl+P(custom)
Navigation: Select To : Shift+L Click
Navigation: Select To End Of File : Ctrl+Shift+End
Navigation: Select To End Of Line : Shift+End
Navigation: Select To Start Of Line : Shift+Home
Navigation: Select To Top Of File : Ctrl+Shift+Home
Navigation: Select Word : Shift+F5
Navigation: Select Word Left : Ctrl+Shift+Left
Navigation: Select Word Right : Ctrl+Shift+Right
Navigation: Selection History... : Ctrl+Shift+M
Navigation: Smart Beginning Of Line : Alt+Home(custom)
Navigation: Smart End Of Line : Alt+End(custom)
Navigation: Top Of File : Ctrl+Home
Navigation: Word Left : Ctrl+Left
Navigation: Word Right : Ctrl+Right
Options: Sort Symbol Window : Alt+F7
Search: Incremental Search... : F12
Search: Replace Files... : Ctrl+Shift+H
Search: Search Backward : F3
Search: Search Backward for Selection : Shift+F3
Search: Search Files... : Ctrl+Shift+F
Search: Search Forward : F4