⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000000.htm

📁 水木社区 embeded 版精华区 下载
💻 HTM
📖 第 1 页 / 共 4 页
字号:
est,&nbsp;hook&nbsp;up&nbsp;the&nbsp;interrupt-driven&nbsp;serial&nbsp;port&nbsp;to&nbsp;the&nbsp;host&nbsp;development&nbsp;platfo&nbsp;<br />rm&nbsp;and&nbsp;run&nbsp;a&nbsp;serial&nbsp;communication&nbsp;program&nbsp;to&nbsp;communicate&nbsp;with&nbsp;your&nbsp;target&nbsp;(t&nbsp;<br />erminal&nbsp;device).&nbsp;<br />Bootloader&nbsp;<br />Although&nbsp;LILO&nbsp;(the&nbsp;Linux&nbsp;loader)&nbsp;should&nbsp;be&nbsp;available&nbsp;for&nbsp;your&nbsp;architecture,&nbsp;&nbsp;<br />it&nbsp;may&nbsp;be&nbsp;quicker&nbsp;to&nbsp;use&nbsp;your&nbsp;own&nbsp;bootloader&nbsp;to&nbsp;load&nbsp;the&nbsp;Linux&nbsp;kernel.&nbsp;[4]&nbsp;L&nbsp;<br />ILO&nbsp;passes&nbsp;some&nbsp;information&nbsp;to&nbsp;the&nbsp;kernel&nbsp;in&nbsp;a&nbsp;way&nbsp;similar&nbsp;to&nbsp;how&nbsp;an&nbsp;Intel&nbsp;P&nbsp;<br />C&nbsp;BIOS&nbsp;passes&nbsp;information&nbsp;to&nbsp;the&nbsp;kernel.&nbsp;LILO&nbsp;then&nbsp;calls&nbsp;the&nbsp;&quot;kernel_entry&quot;&nbsp;&nbsp;<br />function&nbsp;inside&nbsp;the&nbsp;kernel,&nbsp;giving&nbsp;up&nbsp;control&nbsp;to&nbsp;the&nbsp;kernel.&nbsp;If&nbsp;you're&nbsp;using&nbsp;<br />&nbsp;your&nbsp;own&nbsp;bootloader,&nbsp;you&nbsp;need&nbsp;to&nbsp;pass&nbsp;parameters&nbsp;to&nbsp;the&nbsp;kernel&nbsp;by&nbsp;adding&nbsp;th&nbsp;<br />em&nbsp;to&nbsp;the&nbsp;&quot;command_line&quot;&nbsp;string,&nbsp;which&nbsp;is&nbsp;parsed&nbsp;by&nbsp;the&nbsp;kernel.&nbsp;In&nbsp;my&nbsp;case,&nbsp;&nbsp;<br />I&nbsp;had&nbsp;to&nbsp;add&nbsp;&quot;root=/dev/ram&quot;&nbsp;to&nbsp;the&nbsp;command_line&nbsp;string&nbsp;to&nbsp;tell&nbsp;the&nbsp;kernel&nbsp;t&nbsp;<br />hat&nbsp;I&nbsp;wanted&nbsp;the&nbsp;ramdisk&nbsp;to&nbsp;be&nbsp;mounted&nbsp;as&nbsp;the&nbsp;root&nbsp;file&nbsp;system.&nbsp;You&nbsp;could&nbsp;ad&nbsp;<br />d&nbsp;other&nbsp;kernel&nbsp;parameters&nbsp;to&nbsp;this&nbsp;string,&nbsp;if&nbsp;needed.&nbsp;Load&nbsp;the&nbsp;image&nbsp;at&nbsp;the&nbsp;s&nbsp;<br />pecified&nbsp;load&nbsp;address&nbsp;using&nbsp;your&nbsp;bootloader.&nbsp;Start&nbsp;executing&nbsp;from&nbsp;the&nbsp;addres&nbsp;<br />s&nbsp;of&nbsp;the&nbsp;&quot;kernel_entry&quot;&nbsp;symbol&nbsp;in&nbsp;the&nbsp;kernel&nbsp;image.&nbsp;<br />It&nbsp;will&nbsp;be&nbsp;easier&nbsp;to&nbsp;debug&nbsp;if&nbsp;the&nbsp;bootloader&nbsp;had&nbsp;its&nbsp;own&nbsp;&quot;print&quot;&nbsp;function,&nbsp;b&nbsp;<br />ecause&nbsp;the&nbsp;printk&nbsp;function&nbsp;inside&nbsp;the&nbsp;kernel&nbsp;buffers&nbsp;all&nbsp;the&nbsp;output&nbsp;to&nbsp;the&nbsp;c&nbsp;<br />onsole&nbsp;until&nbsp;the&nbsp;console&nbsp;is&nbsp;initialized&nbsp;(console_init()&nbsp;in&nbsp;$(TOPDIR)/init/ma&nbsp;<br />in.c).&nbsp;<br />If&nbsp;everything&nbsp;goes&nbsp;well,&nbsp;you&nbsp;should&nbsp;get&nbsp;something&nbsp;like&nbsp;the&nbsp;following&nbsp;message&nbsp;<br />&nbsp;on&nbsp;your&nbsp;kernel&nbsp;debug&nbsp;terminal:&nbsp;<br />Detected&nbsp;32MB&nbsp;of&nbsp;memory.&nbsp;<br />Loading&nbsp;R4000/MIPS32&nbsp;MMU&nbsp;routines.&nbsp;<br />CPU&nbsp;revision&nbsp;is:&nbsp;000028a0&nbsp;<br />Primary&nbsp;instruction&nbsp;cache&nbsp;32&nbsp;kb,&nbsp;linesize&nbsp;32&nbsp;bytes&nbsp;<br />Primary&nbsp;data&nbsp;cache&nbsp;32&nbsp;kb,&nbsp;linesize&nbsp;32&nbsp;bytes&nbsp;<br />Linux&nbsp;version&nbsp;2.2.12&nbsp;(rpalani@rplinux)&nbsp;<br />(gcc&nbsp;version&nbsp;egcs-2.90.29&nbsp;980515&nbsp;(egcs-10))&nbsp;<br />CPU&nbsp;frequency&nbsp;200.00&nbsp;MHz&nbsp;<br />Calibrating&nbsp;delay&nbsp;loop:&nbsp;199.88&nbsp;BogoMIPS&nbsp;<br />Memory:&nbsp;14612k/16380k&nbsp;available&nbsp;<br />(472k&nbsp;kernel&nbsp;code,&nbsp;908k&nbsp;data)&nbsp;<br />Checking&nbsp;for&nbsp;鍂ait'&nbsp;instruction...&nbsp;&nbsp;available.&nbsp;<br />POSIX&nbsp;conformance&nbsp;testing&nbsp;by&nbsp;UNIFIX&nbsp;<br />Linux&nbsp;NET4.0&nbsp;for&nbsp;Linux&nbsp;2.2&nbsp;<br />Based&nbsp;upon&nbsp;Swansea&nbsp;University&nbsp;Computer&nbsp;Society&nbsp;NET3.039&nbsp;<br />Starting&nbsp;kswapd&nbsp;v1.1.1.1&nbsp;<br />No&nbsp;keyboard&nbsp;driver&nbsp;installed&nbsp;<br />RAMDISK&nbsp;driver&nbsp;initialized:&nbsp;16&nbsp;RAM&nbsp;disks&nbsp;of&nbsp;4096K&nbsp;size&nbsp;1024&nbsp;blocksize&nbsp;<br />RAMDISK:&nbsp;Compressed&nbsp;image&nbsp;found&nbsp;at&nbsp;block&nbsp;0&nbsp;<br />VFS:&nbsp;Mounted&nbsp;root&nbsp;(ext2&nbsp;filesystem)&nbsp;readonly.&nbsp;<br />Freeing&nbsp;unused&nbsp;kernel&nbsp;memory:&nbsp;32k&nbsp;freed&nbsp;<br />The&nbsp;kernel&nbsp;tries&nbsp;to&nbsp;open&nbsp;a&nbsp;console&nbsp;and&nbsp;find&nbsp;and&nbsp;execute&nbsp;&quot;init&quot;&nbsp;from&nbsp;one&nbsp;of&nbsp;t&nbsp;<br />he&nbsp;following&nbsp;places&nbsp;in&nbsp;the&nbsp;root&nbsp;file&nbsp;system,&nbsp;in&nbsp;sequence:&nbsp;/sbin/init,&nbsp;/etc/i&nbsp;<br />nit,&nbsp;/bin/init.&nbsp;If&nbsp;all&nbsp;the&nbsp;above&nbsp;fail,&nbsp;it&nbsp;tries&nbsp;to&nbsp;create&nbsp;an&nbsp;interactive&nbsp;she&nbsp;<br />ll&nbsp;(/bin/sh&nbsp;as&nbsp;happens&nbsp;in&nbsp;my&nbsp;case).&nbsp;If&nbsp;even&nbsp;this&nbsp;fails,&nbsp;then&nbsp;the&nbsp;kernel&nbsp;&quot;pan&nbsp;<br />ics,&quot;&nbsp;as&nbsp;would&nbsp;you.&nbsp;I&nbsp;hope&nbsp;that&nbsp;this&nbsp;does&nbsp;not&nbsp;happen&nbsp;in&nbsp;your&nbsp;case.&nbsp;If&nbsp;it&nbsp;doe&nbsp;<br />sn't&nbsp;a&nbsp;shell&nbsp;prompt&nbsp;will&nbsp;appear&nbsp;on&nbsp;the&nbsp;console.&nbsp;Applications&nbsp;can&nbsp;be&nbsp;run&nbsp;on&nbsp;t&nbsp;<br />he&nbsp;system&nbsp;by&nbsp;dropping&nbsp;them&nbsp;inside&nbsp;the&nbsp;ramdisk&nbsp;image&nbsp;and&nbsp;executing&nbsp;from&nbsp;there&nbsp;<br />.&nbsp;<br />Adding&nbsp;new&nbsp;drivers&nbsp;<br />New&nbsp;drivers&nbsp;for&nbsp;your&nbsp;target&nbsp;hardware&nbsp;can&nbsp;be&nbsp;added&nbsp;by&nbsp;picking&nbsp;up&nbsp;the&nbsp;driver&nbsp;t&nbsp;<br />hat&nbsp;matches&nbsp;most&nbsp;closely&nbsp;to&nbsp;your&nbsp;hardware&nbsp;(a&nbsp;vast&nbsp;number&nbsp;are&nbsp;available)&nbsp;and&nbsp;&nbsp;<br />modifying&nbsp;it.&nbsp;If&nbsp;you&nbsp;are&nbsp;dealing&nbsp;with&nbsp;a&nbsp;proprietary&nbsp;piece&nbsp;of&nbsp;hardware&nbsp;that&nbsp;i&nbsp;<br />s&nbsp;specific&nbsp;to&nbsp;your&nbsp;system,&nbsp;use&nbsp;the&nbsp;standard&nbsp;driver&nbsp;interfaces&nbsp;to&nbsp;implement&nbsp;a&nbsp;<br />&nbsp;driver&nbsp;for&nbsp;the&nbsp;same.&nbsp;These&nbsp;drivers&nbsp;can&nbsp;be&nbsp;implemented&nbsp;as&nbsp;kernel&nbsp;modules&nbsp;in&nbsp;&nbsp;<br />order&nbsp;to&nbsp;load&nbsp;and&nbsp;unload&nbsp;them&nbsp;using&nbsp;insmod&nbsp;and&nbsp;rmmod.&nbsp;<br />Useful&nbsp;tips&nbsp;<br />Sprinkle&nbsp;printk()&nbsp;statements&nbsp;liberally&nbsp;throughout&nbsp;your&nbsp;code&nbsp;to&nbsp;aid&nbsp;debugging&nbsp;<br />.&nbsp;This&nbsp;may&nbsp;be&nbsp;an&nbsp;obvious&nbsp;suggestion,&nbsp;but&nbsp;it&nbsp;is&nbsp;worth&nbsp;mentioning.&nbsp;Remote&nbsp;GDB&nbsp;&nbsp;<br />[5]&nbsp;may&nbsp;also&nbsp;be&nbsp;useful&nbsp;for&nbsp;debugging,&nbsp;though&nbsp;in&nbsp;my&nbsp;experience&nbsp;printk's&nbsp;are&nbsp;m&nbsp;<br />ore&nbsp;than&nbsp;enough&nbsp;for&nbsp;debugging&nbsp;kernel&nbsp;code.&nbsp;In&nbsp;remote&nbsp;GDB,&nbsp;the&nbsp;host&nbsp;developme&nbsp;<br />nt&nbsp;system&nbsp;runs&nbsp;gdb&nbsp;and&nbsp;talks&nbsp;to&nbsp;the&nbsp;kernel&nbsp;running&nbsp;on&nbsp;the&nbsp;target&nbsp;platform&nbsp;vi&nbsp;<br />a&nbsp;a&nbsp;serial&nbsp;line.&nbsp;You&nbsp;need&nbsp;to&nbsp;setup&nbsp;CONFIG_REMOTE_DEBUG&nbsp;=&nbsp;Y&nbsp;in&nbsp;the&nbsp;kernel&nbsp;con&nbsp;<br />figuration.&nbsp;putDebugChar(char&nbsp;ch)&nbsp;and&nbsp;getDebugChar()&nbsp;are&nbsp;the&nbsp;two&nbsp;functions&nbsp;t&nbsp;<br />hat&nbsp;need&nbsp;to&nbsp;be&nbsp;implemented&nbsp;over&nbsp;the&nbsp;serial&nbsp;port&nbsp;for&nbsp;remote&nbsp;debugging&nbsp;using&nbsp;g&nbsp;<br />db.&nbsp;<br />If&nbsp;you&nbsp;are&nbsp;forced&nbsp;to&nbsp;use&nbsp;a&nbsp;common&nbsp;port&nbsp;for&nbsp;console&nbsp;and&nbsp;debug,&nbsp;the&nbsp;GDB&nbsp;output&nbsp;<br />&nbsp;can&nbsp;be&nbsp;multiplexed&nbsp;with&nbsp;the&nbsp;debug&nbsp;output&nbsp;by&nbsp;setting&nbsp;the&nbsp;high&nbsp;bit&nbsp;in&nbsp;putDebu&nbsp;<br />gChar().&nbsp;GDB&nbsp;forwards&nbsp;output&nbsp;without&nbsp;the&nbsp;high&nbsp;bit&nbsp;set&nbsp;to&nbsp;the&nbsp;user&nbsp;session.&nbsp;<br />To&nbsp;start&nbsp;with,&nbsp;implement&nbsp;only&nbsp;the&nbsp;basic&nbsp;minimum&nbsp;functions&nbsp;for&nbsp;the&nbsp;tty&nbsp;driver&nbsp;<br />&nbsp;as&nbsp;specified&nbsp;in&nbsp;$(TOPDIR)/include/linux/tty_ldisc.h.&nbsp;<br />Real-time&nbsp;requirements&nbsp;<br />The&nbsp;subject&nbsp;of&nbsp;embedded&nbsp;systems&nbsp;is&nbsp;not&nbsp;complete&nbsp;without&nbsp;a&nbsp;mention&nbsp;of&nbsp;real-ti&nbsp;<br />me&nbsp;requirements.&nbsp;The&nbsp;standard&nbsp;Linux&nbsp;kernel&nbsp;provides&nbsp;soft&nbsp;real-time&nbsp;support.&nbsp;&nbsp;<br />There&nbsp;are&nbsp;currently&nbsp;two&nbsp;major&nbsp;approaches&nbsp;to&nbsp;achieve&nbsp;hard&nbsp;real-time&nbsp;with&nbsp;Linu&nbsp;<br />x.&nbsp;These&nbsp;are&nbsp;RTLinux&nbsp;and&nbsp;RTAI.&nbsp;Both&nbsp;approaches&nbsp;have&nbsp;their&nbsp;own&nbsp;real-time&nbsp;kern&nbsp;<br />el&nbsp;running&nbsp;Linux&nbsp;as&nbsp;the&nbsp;lowest&nbsp;priority&nbsp;task.&nbsp;When&nbsp;dealing&nbsp;with&nbsp;proprietary&nbsp;&nbsp;<br />hardware,&nbsp;as&nbsp;it&nbsp;often&nbsp;happens&nbsp;in&nbsp;embedded&nbsp;systems,&nbsp;the&nbsp;issue&nbsp;of&nbsp;proprietary&nbsp;&nbsp;<br />software&nbsp;crops&nbsp;up&nbsp;as&nbsp;well.&nbsp;In&nbsp;Linux,&nbsp;proprietary&nbsp;modules&nbsp;can&nbsp;be&nbsp;handled&nbsp;with&nbsp;<br />&nbsp;the&nbsp;GNU&nbsp;Lesser&nbsp;General&nbsp;Public&nbsp;License,&nbsp;which&nbsp;permits&nbsp;linking&nbsp;with&nbsp;non-free&nbsp;&nbsp;<br />modules.&nbsp;It&nbsp;is&nbsp;compatible&nbsp;with&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License,&nbsp;which&nbsp;is&nbsp;a&nbsp;fr&nbsp;<br />ee&nbsp;software&nbsp;license,&nbsp;and&nbsp;a&nbsp;copyleft&nbsp;license.&nbsp;[6]&nbsp;<br />With&nbsp;a&nbsp;good&nbsp;knowledge&nbsp;of&nbsp;the&nbsp;processor&nbsp;architecture&nbsp;and&nbsp;the&nbsp;hardware&nbsp;devices&nbsp;<br />&nbsp;being&nbsp;used,&nbsp;porting&nbsp;Linux&nbsp;to&nbsp;an&nbsp;embedded&nbsp;system&nbsp;can&nbsp;be&nbsp;accomplished&nbsp;in&nbsp;a&nbsp;sh&nbsp;<br />ort&nbsp;time&nbsp;frame,&nbsp;which&nbsp;is&nbsp;of&nbsp;vital&nbsp;importance&nbsp;in&nbsp;the&nbsp;fast&nbsp;paced&nbsp;embedded&nbsp;syst&nbsp;<br />ems&nbsp;market.&nbsp;In&nbsp;my&nbsp;case,&nbsp;where&nbsp;I&nbsp;have&nbsp;been&nbsp;using&nbsp;UNIX&nbsp;for&nbsp;quite&nbsp;some&nbsp;time,&nbsp;it&nbsp;<br />&nbsp;took&nbsp;me&nbsp;around&nbsp;two&nbsp;months&nbsp;to&nbsp;complete&nbsp;the&nbsp;port&nbsp;of&nbsp;the&nbsp;minimum&nbsp;kernel&nbsp;functi&nbsp;<br />onality&nbsp;to&nbsp;our&nbsp;platform.&nbsp;Porting&nbsp;Linux&nbsp;to&nbsp;a&nbsp;different&nbsp;platform&nbsp;should&nbsp;not&nbsp;ta&nbsp;<br />ke&nbsp;that&nbsp;long&nbsp;when&nbsp;doing&nbsp;it&nbsp;for&nbsp;a&nbsp;second&nbsp;time.&nbsp;<br />Rajesh&nbsp;Palani&nbsp;works&nbsp;as&nbsp;a&nbsp;senior&nbsp;software&nbsp;engineer&nbsp;at&nbsp;Philips&nbsp;Semiconductors.&nbsp;<br />&nbsp;He&nbsp;has&nbsp;been&nbsp;designing&nbsp;and&nbsp;developing&nbsp;embedded&nbsp;software&nbsp;since&nbsp;1993.&nbsp;He&nbsp;has&nbsp;w&nbsp;<br />orked&nbsp;on&nbsp;the&nbsp;design&nbsp;and&nbsp;development&nbsp;of&nbsp;software&nbsp;(ranging&nbsp;from&nbsp;firmware&nbsp;to&nbsp;ap&nbsp;<br />plications)&nbsp;for&nbsp;set-top&nbsp;boxes,&nbsp;digital&nbsp;still&nbsp;cameras,&nbsp;TVs&nbsp;(Teletext),&nbsp;and&nbsp;an&nbsp;<br />tilock&nbsp;braking&nbsp;systems.&nbsp;Contact&nbsp;him&nbsp;at&nbsp;<a href="mailto:rajesh.palani@philips.com.">rajesh.palani@philips.com.</a>&nbsp;<br />Endnotes&nbsp;<br />1.&nbsp;Stands&nbsp;for&nbsp;&quot;GNU's&nbsp;Not&nbsp;Unix,&quot;&nbsp;a&nbsp;project&nbsp;launched&nbsp;in&nbsp;1984&nbsp;to&nbsp;develop&nbsp;a&nbsp;comp&nbsp;<br />lete&nbsp;Unix-like&nbsp;operating&nbsp;system&nbsp;which&nbsp;is&nbsp;free&nbsp;software:&nbsp;the&nbsp;GNU&nbsp;system.&nbsp;<br />Back&nbsp;<br />2.&nbsp;The&nbsp;topmost&nbsp;directory&nbsp;in&nbsp;the&nbsp;Linux&nbsp;source&nbsp;tree&nbsp;(/usr/src/linux,&nbsp;by&nbsp;defaul&nbsp;<br />t).&nbsp;<br />Back&nbsp;<br />3.&nbsp;Translation&nbsp;Lookaside&nbsp;Buffer-hardware&nbsp;used&nbsp;for&nbsp;virtual&nbsp;to&nbsp;physical&nbsp;addres&nbsp;<br />s&nbsp;mapping&nbsp;in&nbsp;a&nbsp;processor.&nbsp;<br />Back&nbsp;<br />4.&nbsp;The&nbsp;subject&nbsp;of&nbsp;developing&nbsp;a&nbsp;bootloader&nbsp;for&nbsp;your&nbsp;processor&nbsp;is&nbsp;outside&nbsp;the&nbsp;&nbsp;<br />scope&nbsp;of&nbsp;this&nbsp;article.&nbsp;<br />Back&nbsp;<br />5.&nbsp;GNU&nbsp;Debugger-helps&nbsp;you&nbsp;to&nbsp;start&nbsp;your&nbsp;program,&nbsp;make&nbsp;it&nbsp;stop&nbsp;on&nbsp;specified&nbsp;c&nbsp;<br />onditions,&nbsp;examine&nbsp;what&nbsp;has&nbsp;happened&nbsp;(when&nbsp;your&nbsp;program&nbsp;has&nbsp;stopped),&nbsp;and&nbsp;ch&nbsp;<br />ange&nbsp;things&nbsp;in&nbsp;your&nbsp;program.&nbsp;<br />Back&nbsp;<br />6.&nbsp;Copyleft&nbsp;says&nbsp;that&nbsp;anyone&nbsp;who&nbsp;redistributes&nbsp;the&nbsp;software,&nbsp;with&nbsp;or&nbsp;without&nbsp;<br />&nbsp;changes,&nbsp;must&nbsp;pass&nbsp;along&nbsp;the&nbsp;freedom&nbsp;to&nbsp;further&nbsp;copy&nbsp;and&nbsp;change&nbsp;it.&nbsp;<br />Back&nbsp;<br />References&nbsp;<br />A&nbsp;Web&nbsp;site&nbsp;containing&nbsp;a&nbsp;wealth&nbsp;of&nbsp;information&nbsp;on&nbsp;Linux&nbsp;in&nbsp;general:&nbsp;<br />www.kernel.org/LDP&nbsp;<br />Web&nbsp;sites&nbsp;devoted&nbsp;to&nbsp;Linux&nbsp;on&nbsp;MIPS:&nbsp;<br />www.paralogos.com/mipslinux&nbsp;<br />www.linux-vr.org&nbsp;<br />www.linux.sgi.com&nbsp;<br />Web&nbsp;sites&nbsp;dealing&nbsp;with&nbsp;real-time&nbsp;Linux:&nbsp;<br />www.rtlinux.org&nbsp;<br />www.rtai.org&nbsp;<br />Beck,&nbsp;M.&nbsp;et&nbsp;al.&nbsp;Linux&nbsp;Kernel&nbsp;Internals.&nbsp;New&nbsp;York:&nbsp;Addison-Wesley,&nbsp;1998.&nbsp;This&nbsp;<br />&nbsp;book&nbsp;is&nbsp;a&nbsp;good&nbsp;source&nbsp;of&nbsp;information&nbsp;on&nbsp;the&nbsp;kernel&nbsp;internals.&nbsp;Rubini,&nbsp;Alesa&nbsp;<br />ndro.&nbsp;Linux&nbsp;Device&nbsp;Drivers.&nbsp;Sebastopol,&nbsp;CA:&nbsp;O&nbsp;Reilly&nbsp;&amp;&nbsp;Associates,&nbsp;1998.&nbsp;Thi&nbsp;<br />s&nbsp;book&nbsp;delves&nbsp;into&nbsp;kernel&nbsp;internals&nbsp;and&nbsp;talks&nbsp;in&nbsp;detail&nbsp;about&nbsp;all&nbsp;types&nbsp;of&nbsp;d&nbsp;<br />evice&nbsp;drivers&nbsp;under&nbsp;Linux.&nbsp;<br />&nbsp;<br />【&nbsp;在&nbsp;dross&nbsp;(走人了)&nbsp;的大作中提到:&nbsp;】&nbsp;<br />∶<i>&nbsp;如果目标板不是使用i386结构的话呢&nbsp;</i><br />&nbsp;<br />&nbsp;<br />--&nbsp;<br />&nbsp;&nbsp;人有时候需要一点点刺激&nbsp;<br />&nbsp;&nbsp;人有时候需要一点点打击&nbsp;<br />&nbsp;&nbsp;在那时侯不知道生命的意义就在超越自己&nbsp;<br />&nbsp;&nbsp;争取一种意义非凡的胜利&nbsp;<br />&nbsp;&nbsp;我们都是和自己赛跑的人&nbsp;<br />&nbsp;&nbsp;为了更好的明天拼命努力&nbsp;<br />&nbsp;<br />&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;166.111.184.38]&nbsp;<br /><a href="00000000.htm">上一篇</a><a href="javascript:history.go(-1)">返回上一页</a><a href="index.htm">回到目录</a><a href="#top">回到页首</a></center><center><h1>BBS 水木清华站∶精华区</h1></center></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -