﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-迷茫 但我不迷失</title><link>http://www.cppblog.com/040410615/</link><description>在嵌入式世界中的感受</description><language>zh-cn</language><lastBuildDate>Fri, 17 Apr 2026 10:52:32 GMT</lastBuildDate><pubDate>Fri, 17 Apr 2026 10:52:32 GMT</pubDate><ttl>60</ttl><item><title>基于s3c2410  2.6.25内核cs8900网卡驱动的移植</title><link>http://www.cppblog.com/040410615/archive/2008/05/24/50929.html</link><dc:creator>北极冰封</dc:creator><author>北极冰封</author><pubDate>Sat, 24 May 2008 01:11:00 GMT</pubDate><guid>http://www.cppblog.com/040410615/archive/2008/05/24/50929.html</guid><wfw:comment>http://www.cppblog.com/040410615/comments/50929.html</wfw:comment><comments>http://www.cppblog.com/040410615/archive/2008/05/24/50929.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/040410615/comments/commentRss/50929.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/040410615/services/trackbacks/50929.html</trackback:ping><description><![CDATA[<p><br>今天移植了2.6.25的网卡驱动&nbsp;总结一下<br><br>因为在驱动中使用的是虚拟地址，因此要首先将网卡的物理地址映射到虚拟地址</p>
<p>**************************************************************</p>
<p>1 。在include/asm-arm/plat-s3c24xx/common-smdk.h文件中添加</p>
<p>其中必须使用宏__phys_to_pfn 即将物理地址右移12位，跟踪源码可知 与struct map_desc中的pfn相关</p>
<p>#define pSMDK2410_ETH_IO&nbsp; __phys_to_pfn(0x19000000)<br>#define vSMDK2410_ETH_IO&nbsp; S3C2410_ADDR(0x04000000)<br>#define SMDK2410_ETH_IRQ&nbsp;&nbsp; IRQ_EINT9<br>***********************************************************************************</p>
<p>2.我是在arch/arm/mach-s3c2410/mach-smdk2410.c&nbsp; 文件中添加<br>修改</p>
<p>static struct map_desc smdk2410_iodesc[] __initdata={<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {vSMDK2410_ETH_IO, pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE}//添加的<br>};</p>
<p>*****************************************************************************<br>4、修改 drivers/net/cs89x0.c</p>
<p>下面是我diff：'+'为我添加出 '-'为原来的代码<br>+****************************************************************************<br>&nbsp;/* Event inputs bank 1 - ID 35/bit 3 */<br>&nbsp;static unsigned int netcard_portlist[] __initdata = {CIRRUS_DEFAULT_BASE, 0};<br>&nbsp;static unsigned int cs8900_irq_map[] = {CIRRUS_DEFAULT_IRQ, 0, 0, 0};</p>
<p>+#elif defined(CONFIG_ARCH_S3C2410) //Added weibing<br>+#include &lt;linux/irq.h&gt;<br>+#include &lt;asm/irq.h&gt;<br>+#include &lt;asm/arch/irqs.h&gt;<br>+#include &lt;asm/arch/regs-mem.h&gt;<br>+#include &lt;asm/arch/regs-gpio.h&gt;<br>+#include &lt;asm-arm/plat-s3c24xx/common-smdk.h&gt;</p>
<p>+static unsigned int netcard_portlist[] __initdata = { vSMDK2410_ETH_IO +<br>DEFAULTIOBASE, 0};<br>+static unsigned int cs8900_irq_map[] = {SMDK2410_ETH_IRQ , 0, 0, 0};<br>+<br>+#ifdef request_region<br>+#undef request_region<br>+#endif</p>
<p>+#ifdef release_region<br>+#undef release_region<br>+#endif</p>
<p>+#define request_region(a,s,n) request_mem_region(a,s,n)<br>+#define release_region(a,s) release_mem_region(a,s)</p>
<p>&nbsp;#else<br>&nbsp;static unsigned int netcard_portlist[] __initdata =<br>&nbsp;&nbsp;&nbsp; { 0x300, 0x320, 0x340, 0x360, 0x200, 0x220, 0x240, 0x260, 0x280, 0x2a0, 0x2c0, 0x2e0, 0};<br>*************************************************************************************</p>
<p>&nbsp;</p>
<p>**************************************************************************<br>//其中BWSCON BANKCON3必须设置，其用法s3c2410中文手册<br>@@ -324,6 +348,10 @@<br>&nbsp; io = dev-&gt;base_addr;<br>&nbsp; irq = dev-&gt;irq;</p>
<p>+#ifdef CONFIG_ARCH_S3C2410 <br>+ __raw_writel((__raw_readl(S3C2410_GPGCON)&amp;~(0x3&lt;&lt;2))|(0x2&lt;&lt;2),S3C2410_GPGCON);<br>+ __raw_writel((__raw_readl(S3C2410_EXTINT1)&amp;~(0x7&lt;&lt;4))|(0x4&lt;&lt;4),S3C2410_EXTINT1);<br>+ __raw_writel(0x2211d110,S3C2410_BWSCON);<br>+ __raw_writel(0x1f7c,S3C2410_BANKCON3);<br>+#endif</p>
<p>&nbsp; if (net_debug)<br>&nbsp;&nbsp; printk("cs89x0:cs89x0_probe(0x%x)\n", io);<br>****************************************************************************</p>
<p><br>*************************************************************************** <br>@@ -386,6 +414,18 @@<br>&nbsp;{<br>&nbsp; outw(value, base_addr + (portno &lt;&lt; 1));<br>&nbsp;}<br>+#elif defined(CONFIG_ARCH_S3C2410) <br>+static u16<br>+readword(unsigned long base_addr, int portno)<br>+{<br>+ return __raw_readw(base_addr+portno);<br>+}<br>+<br>+static void <br>+writeword(unsigned long base_addr, int portno,u16 value) <br>+{ <br>+ __raw_writew(value,base_addr+portno); <br>+} <br>&nbsp;#else<br>&nbsp;static u16<br>&nbsp;readword(unsigned long base_addr, int portno)<br>***************************************************************************</p>
<p><br>**************************************************************************</p>
<p>此处设置MAC地址 ，其值不能随便设置。&nbsp; 其高32为指定的厂商号，即00 E0 4C 4D （为某牌网卡）<br>后16为可以随便设置，否则在使用ifconfig时出错。</p>
<p>因为在嵌入式版中没有EPROM所以MAC地址不能指定，需自己设置。<br>@@ -638,7 +678,18 @@<br>&nbsp;&nbsp;&nbsp;&nbsp; the driver will always do *something* instead of complain that<br>&nbsp;&nbsp;&nbsp;&nbsp; adapter_cnf is 0. */<br>&nbsp;<br>-#ifdef CONFIG_SH_HICOSH4<br>+#if defined CONFIG_ARCH_S3C2410 <br>+ lp-&gt;force=FORCE_RJ45; <br>+ lp-&gt;auto_neg_cnf=IMM_BIT; <br>+<br>+ dev-&gt;dev_addr[0]=0x00; /*setMACaddress*/<br>+ dev-&gt;dev_addr[1]=0xE0;<br>+ dev-&gt;dev_addr[2]=0x4C;<br>+ dev-&gt;dev_addr[3]=0x4D;<br>+ dev-&gt;dev_addr[4]=0x10;<br>+ dev-&gt;dev_addr[5]=0x30;<br>+<br>+#elif defined CONFIG_SH_HICOSH4<br>&nbsp; if (1) {<br>&nbsp;&nbsp; /* For the HiCO.SH4 board, things are different: we don't<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; have EEPROM, but there is some data in flash, so we go<br>*************************************************************************</p>
<p>&nbsp;</p>
<p>***************************************************************************<br>@@ -1278,7 +1329,7 @@<br>&nbsp; int i;<br>&nbsp; int ret;<br>&nbsp;<br>-#if !defined(CONFIG_SH_HICOSH4) &amp;&amp; !defined(CONFIG_ARCH_PNX010X) /* uses irq#1, so this won't work */</p>
<p>+#if !defined(CONFIG_SH_HICOSH4) &amp;&amp; !defined(CONFIG_ARCH_PNX010X) &amp;&amp; !defined<br>(CONFIG_ARCH_S3C2410) /* uses irq#1, so this won't work */<br>&nbsp; if (dev-&gt;irq &lt; 2) {<br>&nbsp;&nbsp; /* Allow interrupts to be generated by the chip */<br>&nbsp;/* Cirrus' release had this: */<br>*************************************************************************************</p>
<p>*************************************************************************************<br>@@ -1309,7 +1360,7 @@<br>&nbsp; else<br>&nbsp;#endif<br>&nbsp; {<br>-#if !defined(CONFIG_MACH_IXDP2351) &amp;&amp; !defined(CONFIG_ARCH_IXDP2X01) &amp;&amp; !defined(CONFIG_ARCH_PNX010X)<br>+#if !defined(CONFIG_MACH_IXDP2351) &amp;&amp; !defined(CONFIG_ARCH_IXDP2X01) &amp;&amp; !defined(CONFIG_ARCH_PNX010X) &amp;&amp; !defined(CONFIG_ARCH_S3C2410)<br>&nbsp;&nbsp; if (((1 &lt;&lt; dev-&gt;irq) &amp; lp-&gt;irq_map) == 0) {<br>&nbsp;&nbsp;&nbsp; printk(KERN_ERR "%s: IRQ %d is not in our map of allowable IRQs, which is %x\n",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dev-&gt;name, dev-&gt;irq, lp-&gt;irq_map);<br>*************************************************************************************</p>
<p>*************************************************************************************<br>@@ -1324,6 +1375,9 @@<br>&nbsp;&nbsp; writereg(dev, PP_BusCTL, ENABLE_IRQ | MEMORY_ON);<br>&nbsp;#endif<br>&nbsp;&nbsp; write_irq(dev, lp-&gt;chip_type, dev-&gt;irq);<br>+#if defined(CONFIG_ARCH_S3C2410)<br>+&nbsp; set_irq_type(dev-&gt;irq, IRQT_RISING);<br>+#endif<br>&nbsp;&nbsp; ret = request_irq(dev-&gt;irq, &amp;net_interrupt, 0, dev-&gt;name, dev);<br>&nbsp;&nbsp; if (ret) {<br>&nbsp;&nbsp;&nbsp; if (net_debug)<br>****************************************************************************************</p>
<p><br>************************************************************************************<br>@@ -1394,7 +1448,7 @@<br>&nbsp; case A_CNF_MEDIA_10B_2: result = lp-&gt;adapter_cnf &amp; A_CNF_10B_2; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default: result = lp-&gt;adapter_cnf &amp; (A_CNF_10B_T | A_CNF_AUI | A_CNF_10B_2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>-#ifdef CONFIG_ARCH_PNX010X<br>+#if defined(CONFIG_ARCH_PNX0105) || defined(CONFIG_ARCH_S3C2410)<br>&nbsp; result = A_CNF_10B_T;<br>&nbsp;#endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!result) {<br>*******************************************************************************</p>
<p><br>4&nbsp; 燃后在make menuconfig <br>&nbsp; [*]&nbsp;&nbsp; Ethernet (10 or 100Mbit)&nbsp; ---&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -*-&nbsp;&nbsp; EISA, VLB, PCI and on board controllers</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;*&gt;&nbsp;&nbsp; CS89x0 support</p>
<p>make zImage&nbsp; 成功</p>
<p>*********************************************************************************<br>注：</p>
<p>我在网上看到有人在&nbsp; drivers/net/Kconfig文件中的config CS89*0配置信息中加入</p>
<p><br>depend&nbsp; on ARCH_S3C2410&nbsp; <br>我觉得没有必要的&nbsp; </p>
<p>我验证了一下&nbsp; 确实没有必要的。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/040410615/aggbug/50929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/040410615/" target="_blank">北极冰封</a> 2008-05-24 09:11 <a href="http://www.cppblog.com/040410615/archive/2008/05/24/50929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于s3c2410开发板2.6.25内核的USB驱动的移植</title><link>http://www.cppblog.com/040410615/archive/2008/05/16/50050.html</link><dc:creator>北极冰封</dc:creator><author>北极冰封</author><pubDate>Fri, 16 May 2008 08:05:00 GMT</pubDate><guid>http://www.cppblog.com/040410615/archive/2008/05/16/50050.html</guid><wfw:comment>http://www.cppblog.com/040410615/comments/50050.html</wfw:comment><comments>http://www.cppblog.com/040410615/archive/2008/05/16/50050.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/040410615/comments/commentRss/50050.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/040410615/services/trackbacks/50050.html</trackback:ping><description><![CDATA[<p>因为2.6.25内核源码中并没有USB驱动的初始化程序，因此我添加了相应的代码：<br><br>在linux-2.6.25/arch/arm/mach-s3c2410/mach-smdk2410.c文件中添加：<br>static struct s3c2410_hcd_info usb_s3c2410_info = {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .port[0]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .flags&nbsp; = S3C_HCDFLG_USED<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .port[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .flags&nbsp; = S3C_HCDFLG_USED<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>};</p>
<p>&nbsp;</p>
<p>int __init s3c2410_init_usb(void)<br>{<br>&nbsp;&nbsp;&nbsp; unsigned long upllvalue;<br>&nbsp;&nbsp;&nbsp; printk("USB Control, (c) 2006 pc104\n");<br>&nbsp;&nbsp;&nbsp; s3c_device_usb.dev.platform_data = &amp;usb_s3c2410_info;</p>
<p>&nbsp;&nbsp;&nbsp; s3c2410_modify_misccr(S3C2410_MISCCR_USBSUSPND0 |<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S3C2410_MISCCR_USBSUSPND1, 0x8);</p>
<p>&nbsp;&nbsp;&nbsp; upllvalue = (0x78&lt;&lt;12)|(0x02&lt;&lt;4)|(0x03);<br>&nbsp;&nbsp;&nbsp; while(upllvalue!=__raw_readl(S3C2410_UPLLCON))<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; __raw_writel(upllvalue,S3C2410_UPLLCON);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mdelay(1);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return 0;<br>}</p>
<p>在此函数中添加了红色部分：</p>
<p>static void __init smdk2410_init(void)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; platform_add_devices(smdk2410_devices, ARRAY_SIZE(smdk2410_devices));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smdk_machine_init();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #ff0000">s3c2410_init_usb();</span><br>}<br>其对上面代码的解释看下此帖：<br><a href="http://www.linuxforum.net/forum/showflat.phpCat=&amp;Board=embedded&amp;Number=556915&amp;page=0&amp;view=collapsed&amp;sb=5&amp;o=0&amp;fpart">http://www.linuxforum.net/forum/showflat.phpCat=&amp;Board=embedded&amp;Number=556915&amp;page=0&amp;view=collapsed&amp;sb=5&amp;o=0&amp;fpart</a>=<br><br>拷贝linux-2.6.25/arch/arm/configs/s3c2410_defconfig&nbsp;缺省配置文件&nbsp; 并命名.config<br>make&nbsp; menuconfig&nbsp; 再进行配置<br>1.设备驱动部分设置<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;General setup &nbsp;---&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; [*]Configure standard kernel features (for small systems)&nbsp; ---&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [*] Support for hot-pluggable devices<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Device Drivers &nbsp;---&gt;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generic Driver Options &nbsp;---&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&lt;*&gt; Hotplug firmware loading support&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Block devices &nbsp;---&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br>&lt;*&gt; Low Performance USB Block driver&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCSI device support &nbsp;---&gt;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;*&gt; &nbsp; SCSI generic support&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;*&gt; &nbsp; SCSI&nbsp;disk&nbsp;&nbsp;support<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[*] &nbsp; Probe all LUNs on each SCSI device&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USB support &nbsp;---&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&lt;*&gt; Support for Host-side USB&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [*] &nbsp; USB device filesystem&nbsp;<br>&nbsp;&lt;*&gt; &nbsp; OHCI HCD support&nbsp;&nbsp;<br>&lt;*&gt; &nbsp; USB Mass Storage support&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [*] &nbsp; USB Monitor<br><br>这里我选择了SCSI设备。<br><br>2 文件系统部分设置<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File systems &nbsp;---&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOS/FAT/NT Filesystems &nbsp;---&gt;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;*&gt; MSDOS fs support&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;*&gt; VFAT (Windows-95) fs support&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (936) Default codepage for FAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cp936) Default iocharset for FAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp; File systems&nbsp; ---&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;Partition Types&nbsp; ---&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [*]&nbsp;&nbsp; PC BIOS (MSDOS partition tables) support<br><span>&nbsp;3 加入一些字体库 <br>&nbsp; Native Language Support&nbsp; ---&gt;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;*&gt;&nbsp;&nbsp; Simplified Chinese charset (CP936, GB2312)&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;*&gt;&nbsp;&nbsp; NLS UTF8<br></span><br>但我将内核镜像烧入板中后，插入U盘&nbsp; mount&nbsp; 挂载时出现如下错误：</p>
<p>Unable to load NLS charset cp437<br>FAT: codepage cp437 not found<br>mount: mounting sda1 on /mnt failed: Invalid argument<br><br><br><span>因此我又重新增加了配置选项在&nbsp;Native Language Support&nbsp; ---&gt;&nbsp;&nbsp;&nbsp; 中<br>File systems &nbsp;---&gt;</span>&nbsp;&nbsp;&nbsp;<br>Native Language Support&nbsp; ---&gt;&nbsp;&nbsp;&nbsp; <br>&nbsp; &lt;*&gt;&nbsp;&nbsp; Codepage 437 (United States, Canada)&nbsp; <br>&lt;*&gt;&nbsp;&nbsp; Simplified Chinese charset (CP936, GB2312)&nbsp; <br><br>然后再编译<br>make&nbsp; zImage <br><br>烧入镜像后插入U盘显示如下信息<br><br>sd 1:0:0:0: [sda] 129312 512-byte hardware sectors (66 MB)<br>sd 1:0:0:0: [sda] Write Protect is off<br>sd 1:0:0:0: [sda] Assuming drive cache: write through<br>sd 1:0:0:0: [sda] 129312 512-byte hardware sectors (66 MB)<br>sd 1:0:0:0: [sda] Write Protect is off<br>sd 1:0:0:0: [sda] Assuming drive cache: write through<br>sda: sda1<br>sda: p1 exceeds device capacity<br>sd 1:0:0:0: [sda] Attached SCSI removable disk<br><br><br>然后mount&nbsp; -t vfat /dev/sda1&nbsp; /mnt <br>其中设备文件名是我在安装文件系统时生成的<br>在/dev/中<br>mknod&nbsp; sda1&nbsp; b 8 0<br><br>加载成功<br><br><br></p>
<img src ="http://www.cppblog.com/040410615/aggbug/50050.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/040410615/" target="_blank">北极冰封</a> 2008-05-16 16:05 <a href="http://www.cppblog.com/040410615/archive/2008/05/16/50050.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>