Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

LinuxÄÚºË̬ϵÄÎļþ²Ù×÷

ÔÚVFSµÄÖ§³ÖÏ£¬Óû§Ì¬½ø³Ì¶ÁдÈκÎÀàÐ͵ÄÎļþϵͳ¶¼¿ÉÒÔʹÓÃreadºÍwrite×ÅÁ½¸öϵͳµ÷Ó㬵«ÊÇÔÚlinuxÄÚºËÖÐûÓÐÕâÑùµÄϵͳµ÷ÓÃÎÒÃÇÈçºÎ²Ù×÷ÎļþÄØ£¿ÎÒÃÇÖªµÀreadºÍwriteÔÚ½øÈëÄÚºË̬֮ºó£¬Êµ¼ÊÖ´ÐеÄÊÇsys_readºÍsys_write£¬µ«ÊDz鿴ÄÚºËÔ´´úÂ룬·¢ÏÖÕâЩ²Ù×÷ÎļþµÄº¯Êý¶¼Ã»Óе¼³ö(ʹÓÃEXPORT_SYMBOLµ¼³ö)£¬Ò²¾ÍÊÇ˵ÔÚÄÚºËÄ£¿éÖÐÊDz»ÄÜʹÓõģ¬ÄÇÈçºÎÊǺã¿
 
ͨ¹ý²é¿´sys_openµÄÔ´ÂëÎÒÃÇ·¢ÏÖ£¬ÆäÖ÷ҪʹÓÃÁËdo_filp_open()º¯Êý£¬¸Ãº¯ÊýÔÚfs/namei.cÖУ¬¶øÔÚ¸ÄÎļþÖУ¬filp_openº¯ÊýÒ²Êǵ÷ÓÃÁËdo_filp_openº¯Êý£¬²¢ÇÒ½Ó¿ÚºÍsys_openº¯Êý¼«ÎªÏàËÆ£¬µ÷ÓòÎÊýÒ²ºÍsys_openÒ»Ñù£¬²¢ÇÒʹÓÃEXPORT_SYMBOLµ¼³öÁË£¬ËùÒÔÎÒÃDzÂÏë¸Ãº¯Êý¿ÉÒÔ´ò¿ªÎļþ£¬¹¦ÄܺÍopenÒ»Ñù¡£Ê¹ÓÃͬÑùµÄ²éÕÒ·½·¨£¬ÎÒÃÇÕÒ³öÁËÒ»×éÔÚÄÚºËÖвÙ×÷ÎļþµÄº¯Êý£¬ÈçÏ£º
 
¹¦ÄÜ
º¯ÊýÔ­ÐÍ
´ò¿ªÎļþ
struct file *filp_open(const char *filename, int flags, int mode)
¶ÁÈ¡Îļþ
ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
дÎļþ
ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_t *pos)
¹Ø±ÕÎļþ
int filp_close(struct file *filp, fl_owner_t id)
 
ÎÒÃÇ×¢Òâµ½ÔÚvfs_readºÍvfs_writeº¯ÊýÖУ¬Æä²ÎÊýbufÖ¸ÏòµÄÓû§¿Õ¼äµÄÄÚ´æµØÖ·£¬Èç¹ûÎÒÃÇÖ±½ÓʹÓÃÄں˿ռäµÄÖ¸Õ룬Ôò»á·µ»Ø-EFALUT¡£ËùÒÔÎÒÃÇÐèҪʹÓÃ
set_fs()ºÍget_fs()ºêÀ´¸Ä±äÄں˶ÔÄÚ´æµØÖ·¼ì²éµÄ´¦Àí·½Ê½£¬ËùÒÔÔÚÄں˿ռä¶ÔÎļþµÄ¶ÁдÁ÷³ÌΪ£º
mm_segment_t fs = get_fs();
set_fs(KERNEL_FS);
//vfs_write();
vfs_read();
set_fs(fs);
ÏÂÃæÎªÒ»¸öÔÚÄÚºËÖжÔÎļþ²Ù×÷µÄÀý×Ó£º
#include 
#include
#include
#include
static char buf[] = "ÄãºÃ";
static char buf1[10];
 
int __init hello_init(void)
{
    struct file *fp;
    mm_segment_t fs;
    loff_t pos;
    printk("hello enter\n");
    fp = filp_open("/home/niutao/kernel_file", O_RDWR | O_CREAT, 0644);
    if (IS_ERR(fp)) {
        printk("create file error\n");
      &


Ïà¹ØÎĵµ£º

linux fg bg ctrl + z jobs & µÈÃüÁî

fg¡¢bg¡¢jobs¡¢&¡¢ctrl + z¶¼ÊǸúϵͳÈÎÎñÓйصģ¬ËäÈ»ÏÖÔÚ»ù±¾Éϲ»ÔõôÐèÒªÓõ½ÕâЩÃüÁµ«Ñ§»áÁËÒ²ÊǺÜʵÓõÄ
Ò»¡£& ×î¾­³£±»Óõ½
Õâ¸öÓÃÔÚÒ»¸öÃüÁîµÄ×îºó£¬¿ÉÒÔ°ÑÕâ¸öÃüÁî·Åµ½ºǫִ́ÐÐ
¶þ¡£ctrl + z
¿ÉÒÔ½«Ò»¸öÕýÔÚǰִ̨ÐеÄÃüÁî·Åµ½ºǫ́£¬²¢ÇÒÔÝÍ£
Èý¡£jobs
²é¿´µ±Ç°ÓжàÉÙÔÚºǫ́ÔËÐеÄÃüÁî
ËÄ¡£fg
½ ......

±àÒëÃüÁamlogic open linux£© ѧϰ±Ê¼Ç

•ËùÓбàÒëµ÷ÊÔÃüÁî¶¼ÔÚui_ref/trunk/bld_xxxÏÂÃæÖ´ÐÐ,¾ßÌåÄĸöbldÒª¸ù¾ÝÄúʹÓõİå×Ó¾ö¶¨;
•Make #±àÒëÈ«²¿,°üÀ¨kernel, busybox, packagesµÈ;
•Make root #±àÒëÎļþϵͳ;
•Make yaffs#°ÑÎļþϵͳ´ò°üÉú³ÉyaffsÎļþϵͳµÄÓ³Ïñrootfs.yaffsimage,²¢±£´æÔÚbuildĿ¼;
•±àÒëÄÚºË
▫Make k. ......

Ìí¼Ó¿ª»úlogo£¨amlogic open linux£© ѧϰ±Ê¼Ç

1¡¢ÐÞ¸ÄkernelÅäÖã¨linux os£©
ÔÚlinuxÏ£¬ÖÕ¶Ë---½øÈë±àÒëĿ¼£¬Ö´ÐÐmake k.menuconfig£¬
ÔÚµ¯³öµÄÅäÖô°¿ÚÀïÑ¡ÔñDevice Drivers-----Amlogic Devices Driver-----Amlogic Display Driver-----setup logoºÍlogo on osd0
2¡¢Í¼Æ¬×ª»»£¨windows os£©
   a¡¢´ò¿ªBitmapDataGet.exe¹¤¾ß£¬Ñ¡Ôñ32λ¡£
b¡¢Ñ¡Ôñ¼Ó ......

linuxËøµÄÓ¦ÓÃ

ѧ¹ý²Ù×÷ϵͳµÄÈËÖªµÀÓÐÒ»¸ö·Ç³£ÖøÃûµÄÎÊÌ⣺¶ÁÕߣ­Ð´ÕßÎÊÌâ¡£¶ÁÕߣ­Ð´ÕßÎÊÌâÊÇָϵͳµ±ÖеĵÄ×ÊÔ´ÔÚijһʱ¼äÀï¿ÉÒÔͬʱÔÊÐí¶à¸ö½ø³Ì¶Á£¬µ«Ö»ÔÊÐíÒ»¸ö½ø³Ìд¡£Õâ¸ö½ø³Ìͬ²½ÎÊÌâµÄ½â·¨ÓÐÐí¶àÖÖ£¬ÔÚwindowϵͳÀïÓû¥³â±äÁ¿À´½øÐнø³ÌµÄͬ²½¡£ÔÚLinuxÀïÓÐÁíÒ»ÖÖ·½·¨£¬ÄǾÍÊÇÎļþËø£¬ÎļþËøÀïµÄÎļþ²»µ¥µ¥Ö»Ö¸Æ½Ê±Ëù˵µÄÎļþËüÓ ......

ºó¼ÌÎÞÈË£ºLinuxºËÐÄά»¤ÈËÔ±ÈÕ½¥²ÔÀÏ

    Ò»ÄêÒ»¶ÈµÄLinux¿ª·¢Õß´ó»áÉÏÖÜÔھɽðɽ¾ÙÐУ¬»áÉÏLinux»ù½ð»áÖ´ÐÐÀíÊÂJim Zemlin±íʾ£¬µÃÒæÓÚÔÆ¼ÆËãÒÔ¼°ÆäËü¿Æ¼¼³±Á÷µÄ³öÏÖ£¬LinuxµÄÊг¡µØÎ»Ê®·ÖÎȹ̣¬È»¶øÒ»Ð©Ö÷ÒªµÄά»¤ÈËÔ±ÒѾ­ÈÕ½¥²ÔÀÏ£¬ºó¼ÌÕßÈ´»¹Ã»ÓгÉÊì¡£
   sysfsÄÚºË×Óϵͳά»¤ÕßGrey Kroah-HartmanÖ¸³ö£º“ÉϲãµÄÈËÔ±ÈÔȻà ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ