漫谈Linux龙芯及其软件开发.ppt
《漫谈Linux龙芯及其软件开发.ppt》由会员分享,可在线阅读,更多相关《漫谈Linux龙芯及其软件开发.ppt(22页珍藏版)》请在三一文库上搜索。
1、漫谈Linux,龙芯及其软件开发,陈华才 2010.03,目录,Linux及相关概念 Linux开发者初步教程,Linux及相关概念,软件,硬件,操作系统,CPU,DOS,Windows Linux,Unix,X86,IA64 MIPS,ARM,Linux及相关概念(续),X86,Linux,DOS,Windows,FreeBSD,X86是使用最广泛的CPU,Linux是使用最广泛的操作系统 FreeBSD是Unix的一种,可以跑在X86 PC上 龙芯(Godson,Loongson)是MIPS的一种,X86,IA64,PowerPC,龙芯,Linux,Linux及相关概念(续),Q:Wind
2、ows和Linux啥关系? A:决定于在什么平台上: 如果同在X86上,Windows和Linux好比是中国人和美国人的关系(近)。但X86上的Windows和龙芯上的Linux则如同地球人和火星人的关系(远) 在Linux/X86上,可以用Wine来运行Windows程序,但Linux/Loongson上则不行 Q:Linux/X86与Linux/Loongson啥关系? A:一样的皮肤(表象),不一样的基因(本质) 从应用层面和源代码的高级语言层面看来,几乎完全一样。从编译后的二进制代码看来,完全不同。,Linux与龙芯,龙芯CPU系列 龙芯一号:32位嵌入式MIPS CPU 龙芯二号:6
3、4位通用MIPS CPU,有2A、2B、2C、2D、2E和2F等型号(从2E开始进入实用阶段) 龙芯三号:64位多核MIPS CPU,目前只有3A Linux最初只支持X86,后来扩展到其他平台 Linux-2.6.23:开始支持龙芯2E Linux-2.6.33:开始支持龙芯2F,Linux开发者初步教程,Q:Linux有没有VC?有没有Java?有没有? A:Linux支持C,C+,Java,Pascal,ADA几乎地球上的每一种编程语言。 但,Linux不支持VC,因为VC不是语言,是IDE(集成开发环境) Q:Linux有没有IDE? A:有。Qt Creator,KDevelop,G
4、lade,Linux开发者初步教程(续),如果不用IDE 编辑器+编译器+调试器 编辑器:Vim,Emacs,KEdit,GEdit Vim插件,如cscope,ctags可用于函数定位 如果不用插件,文件内用/命令搜索,目录内用grep命令搜索,find用于文件名搜索 编译器:gcc,jdk gcc = GNU C Compiler GNU Compiler Collector 调试器:gdb,ddd Linux可以在纯文本环境下开发任意程序,包括GUI程序!,Linux开发者初步教程(续),关于跨平台 源代码跨平台 vs. 目标代码跨平台 前者是一次编写,处处编译(Qt/C+) 后者是一次
5、编译,处处运行(Java) 跨操作系统 vs. 跨硬件平台 Wine,Cygwin等API模拟器即可实现跨操作系统(硬件平台相同) Java,Python脚本语言才可以跨硬件平台,如何参与Linux软件开发?,Linux User当久了,想成为一个Linux Developer 1,作为用户,给开发者提需求 2,作为测试员,给开发者反映Bug 3,包装开发,如制作RPM、DEB等软件包 4,直接参与代码编写,如何阅读代码?,参与代码编写第一步,阅读已有的代码 一个动辄上万行代码的工程,如何读懂,从哪里读起? 1,如果有文档/书籍,参照阅读 2,如果没有文档(自由软件大都文档不全) 找准入口点
6、理清主脉络 顾名思义看功能,如何阅读代码?(续),找准入口点 高级语言(C语言) 应用程序:从main()开始 内核模块:从XXX_init()开始 搜索关键语句module_init(XXX_init); 内核本身:Linux内核从_start_kernel()开始 Xen内核从_start_xen()开始 汇编语言 可能从start/_start等类似词汇的标号处开始,大多会用.global/.globl伪指令标识,如何阅读代码?(续),理清主脉络 去粗取精,眼不见为净,去掉没用的,留下有用的。 1,代码 vs. 注释 去掉/ /*/ #if 0 #endif 2,程序流程 vs. 变量声
7、明 去掉变量声明,简单赋值 3,功能语句 vs. 调试语句 去掉printf(), printk(), debug() 4,正常流程 vs. 异常流程 去掉返回值检查,try-catch中的catch子句 5,常见路径 vs. 罕见路径 Switch,if-else结构等只保留最常见的一种情况,如何阅读代码?(续),举例:Gxemul 一个运行在X86上的龙芯模拟器 入口点是main()函数,int main(int argc, char *argv) /* Setting constants: */ const int constant_yes = 1; const int constant
8、_true = 1; const int constant_no = 0; const int constant_false = 0; struct emul *emuls; char *diskimages = NULL; int n_diskimages = 0; int n_emuls; int i; progname = argv0; /* Initialize all emulator subsystems: */ console_init(); cpu_init(); device_init(); machine_init(); timer_init(); useremul_ini
9、t(); emuls = malloc(sizeof(struct emul *); if (emuls = NULL) fprintf(stderr, “out of memoryn“); exit(1); /* Allocate space for a simple emul setup: */ n_emuls = 1; emuls0 = emul_new(NULL); if (emuls0 = NULL) fprintf(stderr, “out of memoryn“); exit(1); get_cmd_args(argc, argv, emuls0, ,int main(int a
10、rgc, char *argv) const int constant_yes = 1; const int constant_true = 1; const int constant_no = 0; const int constant_false = 0; struct emul *emuls; char *diskimages = NULL; int n_diskimages = 0; int n_emuls; int i; progname = argv0; console_init(); cpu_init(); device_init(); machine_init(); timer
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 漫谈 Linux 及其 软件 开发
链接地址:https://www.31doc.com/p-2630657.html