ÈçºÎÈÃLinux¸ÉµôWindows£¿ÎÒ³ÐÈÏ£¬ÕâÊÇÓеã±êÌâµ³ÁË¡£µ«Õâ¸öÎʺţ¬¹À¼ÆºÜ¶àLinuxµÄ·ÛË¿²»ÖªµÀ»ÃÏë¹ý¶àÉٱ飻ҡÆìÄź°£¬ÁоÙLinuxÖÚ¶àÓŵ㣬ÂÞÁÐWindows¸÷ÖÖ×ïÐУ¬¾ÍÊÇÈÃÈËÃÇÈ¥ÊÔÊÔLinux¡£¿ÉÊǽá¾ÖÔõôÑù£¿´ó¼Ò¶¼¿´µ½ÁË¡£
ΪʲôLinux»áʧ°Ü£¿àÞ£¬²»Ó¦¸Ã˵ÊÇʧ°Ü£¬Ó¦¸ÃÊÇ˵ΪʲôռÓÐÂÊÔ¶Ô¶µÍÓÚWindows£¿ÒªÖªµÀ£¬Windows¿ÉÊÇÒª¸¶´ó°Ñ´ó°Ñ³®Æ±£¬¶øLinuxµÄ·¢Ðаæ´ó¶àÊý¶¼ÊÇÃâ·ÑµÄ¡£Äª·ÇÈ«ÌìϵÄÈ˶¼ÉµÁ˲»³É£¬ÓÐÃâ·ÑµÄ²»Ó㬾ÍÒª´ÕÈÈÄÖÈ¥³öµãѪ£¿
ºÃ°É£¬ÎÒÃǾÍÒÔÒ»¸ö×îÆÕͨµÄÓû§½Ç¶ÈÀ´¿´¿´°É¡£ÏëÏñһϣ¬³ýÈ¥¹¤×÷ÒÔÍ⣬ÎÒÃÇ»áÓõçÄÔÀ´¸Éɶ£¿
ÉÏÍø¡£Õâ¸ö£¬LinuxÉϵÄFireFox¾ÍÄÜ×öµ½¡£µ±È»ÕâÊÇÄÜ×öµ½£¬²¢²»´ú±íÍêÃÀ¡£ÓжàÉÙÍøÒ³²»ÊÇÒÀÕÕ΢ÈíµÄ¹æ·¶£¬ÒÔ½øÐÐÀ©³ä£¬µ¼ÖÂFireFox²»ÄÜÕý³£ÏÔʾµÄ£¿Äã¿ÉÒÔà©à©²»ÐݵضÔÓû§Ëµ£¬ÕâÊÇÒòÎªÍøÕ¾Ã»ÓзûºÏ±ê×¼¹æ·¶£¬µ¼ÖÂFireFoxÏÔʾ²»Õý³££¬¶øIEÕý³£ÊÇÒòΪ΢Èí¸ãµÃ¹íÖ®ÀàµÈµÈ¡£ÎÒÏëû¼¸¸öÓû§»áÈ¥ÊÔͼÀí½â£¬È»ºóÈÌÊÜÕâ²»ÊÊ¡£¶ÔÓÚËûÃÇÀ´Ëµ£¬ÍøÒ³ÏÔʾ²»Õý³££¬ÎÞ·¨Ê¹ÓÃQQ¿Õ¼ä£¬²»ÄܽøÐÐ͵²ËÕâһȫÃñ»î¶¯£¬»¹²»ÈçÈÃËûÃÇÔÒÁ˵çÄÔËãÁË¡£ÓÃLinux + Fire ......
ϵͳÖÐÄܹ»Ëæ»ú£¨²»ÐèÒª°´Ë³Ðò£©·ÃÎʹ̶¨´óСÊý¾ÝƬ£¨chunks£©µÄÉ豸±»³Æ×÷¿éÉ豸£¬ÕâЩÊý¾ÝƬ¾Í³Æ×÷¿é¡£×î³£¼ûµÄ¿éÉ豸ÊÇÓ²ÅÌ£¬³ý´ËÒÔÍ⣬»¹ÓÐÈíÅÌÇý¶¯Æ÷¡¢CD-ROMÇý¶¯Æ÷ºÍÉÁ´æµÈµÈÐí¶àÆäËû¿éÉ豸¡£×¢Ò⣬ËüÃǶ¼ÊÇÒÔ°²×°ÎļþϵͳµÄ·½Ê½Ê¹Óõė—ÕâÒ²ÊÇ¿éÉ豸һ°ãµÄ·ÃÎÊ·½Ê½¡£
ÁíÒ»ÖÖ»ù±¾µÄÉ豸ÀàÐÍÊÇ×Ö·ûÉ豸¡£×Ö·ûÉ豸°´ÕÕ×Ö·ûÁ÷µÄ·½Ê½±»ÓÐÐò·ÃÎÊ£¬Ïñ´®¿ÚºÍ¼üÅ̾Ͷ¼ÊôÓÚ×Ö·ûÉ豸¡£Èç¹ûÒ»¸öÓ²¼þÉ豸ÊÇÒÔ×Ö·ûÁ÷µÄ·½Ê½±»·ÃÎʵϰ£¬ÄǾÍÓ¦¸Ã½«Ëü¹éÓÚ×Ö·ûÉ豸£»·´¹ýÀ´£¬Èç¹ûÒ»¸öÉ豸ÊÇËæ»ú£¨ÎÞÐòµÄ£©·ÃÎʵģ¬ÄÇôËü¾ÍÊôÓÚ¿éÉ豸¡£
ÕâÁ½ÖÖÀàÐ͵ÄÉ豸µÄ¸ù±¾Çø±ðÔÚÓÚËüÃÇÊÇ·ñ¿ÉÒÔ±»Ëæ»ú·ÃÎÊ——»»¾ä»°Ëµ¾ÍÊÇ£¬ÄÜ·ñÔÚ·ÃÎÊÉè±¸Ê±ËæÒâµØ´ÓÒ»¸öλÖÃÌø×ªµ½ÁíÒ»¸öλÖ᣾ٸöÀý×Ó£¬¼üÅÌÕâÖÖÉ豸ÌṩµÄ¾ÍÊÇÒ»¸öÊý¾ÝÁ÷£¬µ±ÄãÇÃÈë“fox”Õâ¸ö×Ö·û´®Ê±£¬¼üÅÌÇý¶¯³ÌÐò»á°´ÕÕºÍÊäÈëÍêÈ«ÏàͬµÄ˳Ðò·µ»ØÕâ¸öÓÉÈý¸ö×Ö·û×é³ÉµÄÊý¾ÝÁ÷¡£Èç¹ûÈüüÅÌÇý¶¯³ÌÐò´òÂÒ˳ÐòÀ´¶Á×Ö·û´®£¬»ò¶ÁÈ¡ÆäËû×Ö·û£¬¶¼ÊÇûÓÐÒâÒåµÄ¡£ËùÒÔ¼üÅ̾ÍÊÇÒ»ÖÖµäÐ͵Ä×Ö·ûÉ豸£¬ËüÌṩµÄ¾ÍÊÇÓû§´Ó¼üÅÌÊäÈëµÄ×Ö·ûÁ÷¡£¶Ô¼üÅ̽øÐжÁ²Ù× ......
ÏÂÃæµÄ´úÂë·ÖÎöÊǸù¾Ýlinux-2.6.17.14_stm22°æ±¾
#define STSYS_WriteRegDev32LE(Address_p, value) writel((u32)value, (void*)Address_p)
ÔÚinclude/asm-sh/io.h
#define writel(v,a) ({__raw_writel((v),(a));mb();})
#define __raw_write(v,a) __writel((v),(void __iomem *)(a))
#define __writel(v,a) sh_mv.mv_writel(v,a)
ÔÚarch/sh/kernel/setup.cÖаÑsh_mv.mv_writel->generic_write1
ÔÚarch/sh/kernel/io_generic.cÖÐ
void generic_writel(U32 b, void __iomem *addr)
{
ctrl_outl(b,(unsigned long __force)addr);
}
ÔÚinclude/asm-sh/io.h
static inline void ctrl_outl(unsigned inst b,unsigned long addr)
{
*(volatile unsigned long *)addr = b;
}
´æÔÚÒ»¸öÒÉÎÊ£º
×îºóÊÇ´ÓÓû§¿Õ¼äÖ±½ÓÉèÖüĴæÆ÷£¬µ«ÄÜÕâÑùÖ±½Ó¸³ÖµÂ𣿠²»Í¨¹ýMMÂ𣿠......
ϵͳ
# uname -a # ²é¿´ÄÚºË/²Ù×÷ϵͳ/CPUÐÅÏ¢
# head -n 1 /etc/issue # ²é¿´²Ù×÷ϵͳ
°æ±¾
# cat /proc/cpuinfo # ²é¿´CPUÐÅÏ¢
# hostname # ²é¿´¼ÆËã»úÃû
# lspci -tv # ÁгöËùÓÐPCIÉ豸
# lsusb -tv # ÁгöËùÓÐUSBÉ豸
# lsmod # Áгö¼ÓÔØµÄÄÚºËÄ£¿é
# env # ²é¿´»·¾³±äÁ¿
×ÊÔ´
# free -m # ²é¿´ÄÚ´æÊ¹ÓÃÁ¿ºÍ½»»»ÇøÊ¹ÓÃÁ¿
# df -h ......
Ò»£®ºËÐÄÔ´³ÌÐòµÄÎļþ×éÖ¯£º
1£®LinuxºËÐÄÔ´³ÌÐòͨ³£¶¼°²×°ÔÚ/usr/src/linuxÏ£¬¶øÇÒËüÓÐÒ»¸ö·Ç³£¼òµ¥µÄ±àºÅÔ¼¶¨£ºÈκÎżÊýµÄºËÐÄ£¨ÀýÈç2.0.30£©¶¼ÊÇÒ»¸öÎȶ¨µØ·¢ÐеĺËÐÄ£¬¶øÈÎºÎÆæÊýµÄºËÐÄ£¨ÀýÈç2.1.42£©¶¼ÊÇÒ»¸ö¿ª·¢ÖеĺËÐÄ¡£
±¾ÎÄ»ùÓÚÎȶ¨µÄ2.2.5Ô´´úÂ룬µÚ¶þ²¿·ÖµÄʵÏÖÆ½Ì¨Îª Redhat Linux 6.0¡£
2£®ºËÐÄÔ´³ÌÐòµÄÎļþ°´Ê÷Ðνṹ½øÐÐ×éÖ¯£¬ÔÚÔ´³ÌÐòÊ÷µÄ×îÉϲãÄã»á¿´µ½ÕâÑùһЩĿ¼£º
¡ñArch £ºarch×ÓĿ¼°üÀ¨ÁËËùÓкÍÌåϵ½á¹¹Ïà¹ØµÄºËÐÄ´úÂë¡£ËüµÄÿһ¸ö×ÓĿ¼¶¼´ú±íÒ»ÖÖÖ§³ÖµÄÌåϵ½á¹¹£¬ÀýÈçi386¾ÍÊǹØÓÚintel cpu¼°ÓëÖ®Ïà¼æÈÝÌåϵ½á¹¹µÄ×ÓĿ¼¡£PC»úÒ»°ã¶¼»ùÓÚ´ËĿ¼£»
¡ñInclude: include×ÓĿ¼°üÀ¨±àÒëºËÐÄËùÐèÒªµÄ´ó²¿·ÖÍ·Îļþ¡£ÓëÆ½Ì¨Î޹صÄÍ·ÎļþÔÚ include/linux×ÓĿ¼Ï£¬Óë intel cpuÏà¹ØµÄÍ·ÎļþÔÚinclude/asm-i386×ÓĿ¼ÏÂ,¶øinclude/scsiĿ¼ÔòÊÇÓйØscsiÉ豸µÄÍ·ÎļþĿ¼£»
¡ñInit£º Õâ¸öĿ¼°üº¬ºËÐĵijõʼ»¯´úÂë(×¢£º²»ÊÇϵͳµÄÒýµ¼´úÂë)£¬°üº¬Á½¸öÎļþmain.cºÍVersion.c£¬ÕâÊÇÑо¿ºËÐÄÈçºÎ¹¤×÷µÄÒ»¸ö·Ç³£ºÃµÄÆðµã¡£
¡ñMm £ºÕâ¸öĿ¼°üÀ¨ËùÓжÀÁ¢ÓÚ cpu Ìåϵ½á¹¹µÄÄÚ´æ¹ÜÀí´úÂ룬Èçҳʽ´æ´¢¹ÜÀíÄÚ´æµÄ·ÖÅäºÍÊͷŵȣ»¶øºÍÌåϵ½á¹¹Ïà¹ØµÄÄÚ´ ......
#include<unistd.h>
¡¡¡¡¶¨Ò庯Êý£º
¡¡¡¡int execvp(const char *file ,char * const argv []);
¡¡¡¡º¯Êý˵Ã÷£º
¡¡¡¡execvp()»á´ÓPATH »·¾³±äÁ¿ËùÖ¸µÄĿ¼ÖвéÕÒ·ûºÏ²ÎÊýfile µÄÎļþÃû£¬ÕÒµ½ºó±ãÖ´ÐиÃÎļþ£¬È»ºó½«µÚ¶þ¸ö²ÎÊýargv´«¸ø¸ÃÓûÖ´ÐеÄÎļþ¡£
¡¡¡¡·µ»ØÖµ£º
¡¡¡¡Èç¹ûÖ´Ðгɹ¦Ôòº¯Êý²»»á·µ»Ø£¬Ö´ÐÐʧ°ÜÔòÖ±½Ó·µ»Ø-1£¬Ê§°ÜÔÒò´æÓÚerrnoÖÐ
#include<unistd.h>
void main()
{
char * argv[ ] ={"ls","-al",0};
printf("Hello\n");
execvp("ls",argv);
printf("bye\n");
}
²Â²ÂÔËÐнá¹û£¬ºÇºÇ£¬×¢Òâ½ø³Ì±»¸Ä±ä¡£
////////////////////////////////////////////////
#include <unistd.h>
¡¡¡¡º¯Êý¶¨Ò壺
¡¡¡¡int fork( void );
¡¡¡¡·µ»ØÖµ£º
¡¡¡¡×Ó½ø³ÌÖзµ»Ø0£¬¸¸½ø³ÌÖзµ»Ø×Ó½ø³ÌID£¬³ö´í·µ»Ø-1
#include <unistd.h>
#include <stdio.h>
int main(int argc, void ** argv )
{
int pid = fork();
if(pid == -1 ) {
printf("error!");
} else if( pid == 0 ) {
printf("This is the chi ......