漫谈Linux龙芯及其软件开发

上传人:痛*** 文档编号:163650155 上传时间:2022-10-22 格式:PPT 页数:22 大小:665KB
返回 下载 相关 举报
漫谈Linux龙芯及其软件开发_第1页
第1页 / 共22页
漫谈Linux龙芯及其软件开发_第2页
第2页 / 共22页
漫谈Linux龙芯及其软件开发_第3页
第3页 / 共22页
点击查看更多>>
资源描述
漫谈Linux,龙芯及其软件开发陈华才2010.03目录Linux及相关概念Linux开发者初步教程Linux及相关概念软件硬件操作系统CPUDOS,WindowsLinux,UnixX86,IA64MIPS,ARMLinux及相关概念(续)X86LinuxDOSWindowsFreeBSDX86是使用最广泛的CPU,Linux是使用最广泛的操作系统FreeBSD是Unix的一种,可以跑在X86 PC上龙芯(Godson,Loongson)是MIPS的一种X86IA64PowerPC龙芯LinuxLinux及相关概念(续)Q:Windows和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 龙芯二号:64位通用MIPS CPU,有2A、2B、2C、2D、2E和2F等型号(从2E开始进入实用阶段)龙芯三号:64位多核MIPS CPU,目前只有3ALinux开发者初步教程Q:Linux有没有VC?有没有Java?有没有?A:Linux支持C,C+,Java,Pascal,ADA几乎地球上的每一种编程语言。但,Linux不支持VC,因为VC不是语言,是IDE(集成开发环境)Q:Linux有没有IDE?A:有。Qt Creator,KDevelop,GladeLinux开发者初步教程(续)如果不用IDELinux开发者初步教程(续)关于跨平台如何参与Linux软件开发?Linux User当久了,想成为一个Linux Developer如何阅读代码?参与代码编写第一步,阅读已有的代码一个动辄上万行代码的工程,如何读懂,从哪里读起?如何阅读代码?(续)找准入口点如何阅读代码?(续)理清主脉络 去粗取精,眼不见为净,去掉没用的,留下有用的。如何阅读代码?(续)举例:Gxemulint main(int argc,char*argv)/*Setting constants:*/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;/*Initialize all emulator subsystems:*/console_init();cpu_init();device_init();machine_init();timer_init();useremul_init();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,&diskimages,&n_diskimages);if(!skip_srandom_call)struct timeval tv;gettimeofday(&tv,NULL);srandom(tv.tv_sec getpid()tv.tv_usec);/*Print startup message:*/debug(GXemul);debug(Copyright(C)2003-2006 Anders Gavaren);debug(Read the source code and/or documentation for other Copyright messages.nn);if(emuls0-machines0-machine_type=MACHINE_NONE)n_emuls-;else for(i=0;imachines0,diskimagesi);/*Simple initialization,from command line arguments:*/if(n_emuls 0)/*Make sure that there are no configuration files as well:*/for(i=1;iargc;i+)if(argvi0=)fprintf(stderr,You can either start one emulation with one machine directly from the commandnline,or start one or more emulations using configuration files.Not both.n);exit(1);/*Initialize one emul:*/emul_simple_init(emuls0);/*Initialize emulations from config files:*/for(i=1;iargc;i+)if(argvi0=)char tmpstr50;char*s=argvi+1;if(strlen(s)=0&i+1 argc&argvi+10!=)i+;s=argvi;n_emuls+;emuls=realloc(emuls,sizeof(struct emul*)*n_emuls);if(emuls=NULL)fprintf(stderr,out of memoryn);exit(1);/*Always allow slave xterms when using multiple emulations:*/console_allow_slaves(1);/*Destroy the temporary emuls0,since it will be overwritten:*/if(n_emuls=1)emul_destroy(emuls0);emulsn_emuls-1=emul_create_from_configfile(s);snprintf(tmpstr,sizeof(tmpstr),emul%i,n_emuls-1);if(n_emuls=0)fprintf(stderr,No emulations defined.Maybe you forgot to use-E xx and/or-e yy,to specifynthe machine type.For example:nn%s-e 3max-d disk.imgnn to boot an emulated DECstation 5000/200 with a disk image.n,progname);exit(1);device_set_exit_on_error(0);console_warn_if_slaves_are_needed(1);/*Run all emulations:*/emul_run(emuls,n_emuls);/*Deinitialize everything:*/console_deinit();for(i=0;imachines0-machine_type=MACHINE_NONE)n_emuls-;else for(i=0;imachines0,diskimagesi);if(n_emuls 0)for(i=1;iargc;i+)if(argvi0=)fprintf(stderr,You can either start one emulation with one machine directly from the commandnline,or start one or more emulations using configuration files.Not both.n);exit(1);emul_simple_init(emuls0);for(i=1;iargc;i+)if(argvi0=)char tmpstr50;char*s=argvi+1;if(strlen(s)=0&i+1 argc&argvi+10!=)i+;s=argvi;n_emuls+;emuls=realloc(emuls,sizeof(struct emul*)*n_emuls);if(emuls=NULL)fprintf(stderr,out of memoryn);exit(1);console_allow_slaves(1);if(n_emuls=1)emul_destroy(emuls0);emulsn_emuls-1=emul_create_from_configfile(s);snprintf(tmpstr,sizeof(tmpstr),emul%i,n_emuls-1);if(n_emuls=0)fprintf(stderr,No emulations defined.Maybe you forgot to use-E xx and/or-e yy,to specifynthe machine type.For example:nn%s-e 3max-d disk.imgnn to boot an emulated DECstation 5000/200 with a disk image.n,progname);exit(1);device_set_exit_on_error(0);console_warn_if_slaves_are_needed(1);emul_run(emuls,n_emuls);console_deinit();for(i=0;imachines0-machine_type=MACHINE_NONE)n_emuls-;else for(i=0;imachines0,diskimagesi);if(n_emuls 0)for(i=1;iargc;i+)if(argvi0=)fprintf(stderr,You can either start one emulation with one machine directly from the commandnline,or start one or more emulations using configuration files.Not both.n);exit(1);emul_simple_init(emuls0);for(i=1;iargc;i+)if(argvi0=)char tmpstr50;char*s=argvi+1;if(strlen(s)=0&i+1 argc&argvi+10!=)i+;s=argvi;n_emuls+;emuls=realloc(emuls,sizeof(struct emul*)*n_emuls);if(emuls=NULL)fprintf(stderr,out of memoryn);exit(1);console_allow_slaves(1);if(n_emuls=1)emul_destroy(emuls0);emulsn_emuls-1=emul_create_from_configfile(s);snprintf(tmpstr,sizeof(tmpstr),emul%i,n_emuls-1);if(n_emuls=0)fprintf(stderr,No emulations defined.Maybe you forgot to use-E xx and/or-e yy,to specifynthe machine type.For example:nn%s-e 3max-d disk.imgnn to boot an emulated DECstation 5000/200 with a disk image.n,progname);exit(1);device_set_exit_on_error(0);console_warn_if_slaves_are_needed(1);emul_run(emuls,n_emuls);console_deinit();for(i=0;imachines0-machine_type=MACHINE_NONE)n_emuls-;else for(i=0;imachines0,diskimagesi);if(n_emuls 0)for(i=1;iargc;i+)if(argvi0=)fprintf(stderr,You can either start one emulation with one machine directly from the commandnline,or start one or more emulations using configuration files.Not both.n);exit(1);emul_simple_init(emuls0);for(i=1;iargc;i+)if(argvi0=)if(strlen(s)=0&i+1 argc&argvi+10!=)i+;s=argvi;n_emuls+;emuls=realloc(emuls,sizeof(struct emul*)*n_emuls);if(emuls=NULL)fprintf(stderr,out of memoryn);exit(1);console_allow_slaves(1);if(n_emuls=1)emul_destroy(emuls0);emulsn_emuls-1=emul_create_from_configfile(s);snprintf(tmpstr,sizeof(tmpstr),emul%i,n_emuls-1);if(n_emuls=0)fprintf(stderr,No emulations defined.Maybe you forgot to use-E xx and/or-e yy,to specifynthe machine type.For example:nn%s-e 3max-d disk.imgnn to boot an emulated DECstation 5000/200 with a disk image.n,progname);exit(1);device_set_exit_on_error(0);console_warn_if_slaves_are_needed(1);emul_run(emuls,n_emuls);console_deinit();for(i=0;imachines0-machine_type=MACHINE_NONE)n_emuls-;else for(i=0;imachines0,diskimagesi);if(n_emuls 0)for(i=1;iargc;i+)if(argvi0=)fprintf(stderr,You can either start one emulation with one machine directly from the commandnline,or start one or more emulations using configuration files.Not both.n);exit(1);emul_simple_init(emuls0);for(i=1;iargc;i+)if(argvi0=)if(strlen(s)=0&i+1 argc&argvi+10!=)i+;s=argvi;n_emuls+;emuls=realloc(emuls,sizeof(struct emul*)*n_emuls);if(emuls=NULL)fprintf(stderr,out of memoryn);exit(1);console_allow_slaves(1);if(n_emuls=1)emul_destroy(emuls0);emulsn_emuls-1=emul_create_from_configfile(s);snprintf(tmpstr,sizeof(tmpstr),emul%i,n_emuls-1);if(n_emuls=0)fprintf(stderr,No emulations defined.Maybe you forgot to use-E xx and/or-e yy,to specifynthe machine type.For example:nn%s-e 3max-d disk.imgnn to boot an emulated DECstation 5000/200 with a disk image.n,progname);exit(1);device_set_exit_on_error(0);console_warn_if_slaves_are_needed(1);emul_run(emuls,n_emuls);console_deinit();for(i=0;imachines0-machine_type=MACHINE_NONE)n_emuls-;else for(i=0;imachines0,diskimagesi);if(n_emuls 0)for(i=1;iargc;i+)if(argvi0=)exit(1);emul_simple_init(emuls0);for(i=1;iargc;i+)if(argvi0=)if(strlen(s)=0&i+1 argc&argvi+10!=)i+;s=argvi;n_emuls+;emuls=realloc(emuls,sizeof(struct emul*)*n_emuls);console_allow_slaves(1);if(n_emuls=1)emul_destroy(emuls0);emulsn_emuls-1=emul_create_from_configfile(s);if(n_emuls=0)exit(1);device_set_exit_on_error(0);console_warn_if_slaves_are_needed(1);emul_run(emuls,n_emuls);console_deinit();for(i=0;imachines0-machine_type=MACHINE_NONE)n_emuls-;else for(i=0;imachines0,diskimagesi);if(n_emuls 0)for(i=1;iargc;i+)if(argvi0=)exit(1);emul_simple_init(emuls0);for(i=1;iargc;i+)if(argvi0=)if(strlen(s)=0&i+1 argc&argvi+10!=)i+;s=argvi;n_emuls+;emuls=realloc(emuls,sizeof(struct emul*)*n_emuls);console_allow_slaves(1);if(n_emuls=1)emul_destroy(emuls0);emulsn_emuls-1=emul_create_from_configfile(s);if(n_emuls=0)exit(1);device_set_exit_on_error(0);console_warn_if_slaves_are_needed(1);emul_run(emuls,n_emuls);console_deinit();for(i=0;imachines0-machine_type=MACHINE_NONE)n_emuls-;else for(i=0;imachines0,diskimagesi);if(n_emuls 0)emul_simple_init(emuls0);for(i=1;iargc;i+)if(argvi0=)if(strlen(s)=0&i+1 argc&argvi+10!=)i+;s=argvi;n_emuls+;emuls=realloc(emuls,sizeof(struct emul*)*n_emuls);console_allow_slaves(1);if(n_emuls=1)emul_destroy(emuls0);emulsn_emuls-1=emul_create_from_configfile(s);emul_run(emuls,n_emuls);console_deinit();for(i=0;imachines0-machine_type=MACHINE_NONE)n_emuls-;else for(i=0;imachines0,diskimagesi);if(n_emuls 0)emul_simple_init(emuls0);for(i=1;iargc;i+)if(argvi0=)if(strlen(s)=0&i+1 argc&argvi+10!=)i+;s=argvi;n_emuls+;emuls=realloc(emuls,sizeof(struct emul*)*n_emuls);console_allow_slaves(1);if(n_emuls=1)emul_destroy(emuls0);emulsn_emuls-1=emul_create_from_configfile(s);emul_run(emuls,n_emuls);console_deinit();for(i=0;in_emuls;i+)emul_destroy(emulsi);return 0;int main(int argc,char*argv)console_init();cpu_init();device_init();machine_init();timer_init();useremul_init();emuls=malloc(sizeof(struct emul*);emuls0=emul_new(NULL);get_cmd_args(argc,argv,emuls0,&diskimages,&n_diskimages);for(i=0;imachines0,diskimagesi);if(n_emuls 0)emul_simple_init(emuls0);emul_run(emuls,n_emuls);console_deinit();for(i=0;imachines0,diskimagesi);/给机器添加磁盘 emul_simple_init(emuls0);/模拟机器初始化 emul_run(emuls,n_emuls);/运行模拟机器 console_deinit();/控制台销毁 emul_destroy(emulsi);/模拟机器销毁 return 0;/返回是不是很简单?几点看法学习Linux 仇视Windows 存在的就是合理的,Windows有其优点 仇视微软是一种病态 Linus Torvalds Linux要吸收Windows的优点谢谢!欢迎提问
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!