亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mxc_nandfsbuild.c

?? i.mx31 3DS平臺Nandboot引導程序源碼
?? C
字號:
/* * Copyright 2004 Freescale Semiconductor, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *//*! * @file mxc_nandfsbuild.c *  * @brief NAND file system build utility  * * This utility copies IPL binary image (ipl.bin), SPL binary image (spl.bin) * and Linux kernel Image with information of size and crc (Image_crc) to file * flashmem0.dat which simulates a 16 bit 512 bytes page NAND Flash. This file * is be used as NAND flash in Virtio. * It copies ipl.bin to first 4 pages of the NAND flash, spl.bin to the 5th  * page till the end of the 0th block. Linux kernel Image is copied to the 1st * block i.e from offset 0x4200. * All the empty spaces in page or block are written with 0xFF. * After every 512 bytes it writes a spare area of 16 bytes as 0xFF.    *       *  * @ingroup NANDboot */#include<stdio.h>/* data types */typedef unsigned int U32;typedef unsigned char U8;/*! * Path for Initial Program Loader binary image file */ char *iplfile = "./bin/ipl.bin";/*! * Path for Secondary Program Loader binary image file */ char *splfile = "./bin/spl.bin";/*! * Path for Linux kernel image file with size and crc value embedded */ char *imgcrc = "./bin/Image_crc";/*! * Path for root file system */ char *rootfs = "./image/rootfs.cramfs";/*! * Path for output file */ char *outfile = "./bin/flashmem0.dat";/*! * Array of bad block numbers.  This array can be modified to create bad block. * The bad block numbers should be in ascending order.    */ int bdblk[] = { /* 40, 2, 40, 72*/ };/*! * Structure for address location on NAND Flash */ struct location{        U32 off;        U32 page;        U32 block;};/* ! * Global variable to point the last location of the data written to file */struct location end; /*! * Global variable to indicate to put oob info into the output or not */static int require_oob = 0;/*! * This function writes the data from a binary file to flashmem0.dat which  * simulates NAND Flash. It writes the data till the end location specifies by * write_end parameter. If this parameter is null it writes the complete binary * image and then writes the empty space of that block with 0xFF.   *  * @param       frd             binary file to be written * @param       fwt             file pointer to flashmem0.dat * @param       write_end       end location till where data has to be written *  * @return      This function returns 1  if successful. It returns 0 if invalid  * end location which is less than global end location is passed. */ int write_data(FILE* frd, FILE* fwt, struct location* write_end){        U32 off, page, block;        U32 i = 0;        U32 j, bdblk_id;        U32 bdblk_max = 0;        U8 bdblk_data = 0x00;        U8 empty = 0xFF;        U8 ch;        /* check if the end location passed is lesser than current global end          * location         */                 if (write_end) {                if (end.block > write_end->block) {                        if (end.page > write_end->page) {                                if (end.off >= write_end->off) {                                        printf("\nIncorrect end offset");                                        return 0;                                }                        }                }        }        bdblk_max = sizeof(bdblk)/sizeof(int);        bdblk_id = bdblk_max;        while (fread(&ch, 1, 1, frd)) {                if (i < 512) {                        fwrite(&ch, 1, 1, fwt);                                 i++;                } else if (require_oob) {                                                   /* write the spare area */                        for (j = 0; j < 16; j++) {                                fwrite(&empty, 1, 1, fwt);                        }                        /* Writing bad block */                        if ((bdblk_max != 0) &&                                 (end.block == bdblk[bdblk_max - bdblk_id]))                        {                                for (page = 0; page < 32; page++) {                                        for (j = 0; j < 528; j++) {                                                /* Bad block Information */                                                if (j == 523) {                                                        fwrite(&bdblk_data, 1,                                                                       1, fwt);                                                } else {                                                        fwrite(&empty, 1,                                                                      1, fwt);                                                }                                        }                                }                                end.block++;                                printf("\nBolck no %d marked as bad block ",                                                bdblk[bdblk_max - bdblk_id]);                                if (bdblk_id > 0) {                                        bdblk_id--;                                }                         } /* Bad block written */                        /* Write the extra byte read */                        fwrite(&ch, 1, 1, fwt);                        i = 1;                } /* else */                                end.off++;                if (end.off == 512) {                        end.off = 0;                        end.page++;                }                if (end.page == 32) {                        end.off = 0;                        end.page = 0;                        end.block++;                }                        } /* End of file read */        if (write_end) {                off = write_end->off;                page = write_end->page;                block = write_end->block;        } else {                off = 0;                page = 0;                block = end.block + 1;        }        /* Write the empty space with 0xFF */              while ((end.off != off) || (end.page != page) || (end.block != block)) {                fwrite(&empty, 1, 1, fwt);                end.off++;                if (end.off == 528) {                        end.off = 0;                        end.page++;                }                if (end.page == 32) {                        end.off = 0;                        end.page = 0;                        end.block++;                }        }        return 1;}/*! * Main routine for the utility */ int main(int ac, char *av[]){        int ret;        FILE *frd, *fwt;        fpos_t * pos;        struct location image_end;        if (ac >= 2)        {                printf("Assuming oob option in image file\n");                require_oob = 1;        }                fwt = fopen(outfile, "wb");        if (!fwt) {                printf("Failed to open %s\n", outfile);                return 1;        }                /* Write IPL file */        printf("\nWriting ipl.bin at block %d", end.block);        frd = fopen(iplfile, "rb");        if (frd) {                /* Write the IPL image at (blk 0, pg 0) till (blk 0, pg 4) */                 image_end.off = 0;                image_end.page = 4;                image_end.block = 0;                ret = write_data(frd, fwt, &image_end);                fclose(frd);                if (!ret) {                        return 1;                }        } else {                printf("Failed to open %s\n", iplfile);                return 1;        }        /* Write SPL file */        printf("\nWriting spl.bin at block %d", end.block);        frd = fopen(splfile, "rb");        if (frd) {                /* Write the IPL image at (blk 0, pg 0) till (blk 0, pg 4) */                 image_end.off = 0;                image_end.page = 0;                image_end.block = 1;                ret = write_data(frd, fwt, &image_end);                fclose(frd);                if (!ret) {                        return 1;                }        } else {                printf("Failed to open %s\n", splfile);                return 1;        }        /* Write Kernel image with crc */        printf("\nWriting Linux kernel image at block %d", end.block);        frd = fopen(imgcrc, "rb");        if (frd) {                /* Write till the end of the image */                ret = write_data(frd, fwt, 0);                fclose(frd);                if (!ret) {                        return 1;                }        } else {                printf("Failed to open %s\n", imgcrc);                return 1;        }        /* Write rootfs image */        printf("\nWriting rootfs.cramfs image at block %d", end.block);        frd = fopen(rootfs, "rb");        if (frd) {                /* Write till the end of the image */                ret = write_data(frd, fwt, 0);                fclose(frd);                if (!ret) {                        return 1;                }        } else {                printf("\nRootfs not written, %s not found..", rootfs);        }                /* Close the output file */        fclose(fwt);        printf("\nTotal blocks written %d \n", end.block);        return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久不见久久见免费视频1| 国产精品毛片久久久久久| 色婷婷久久99综合精品jk白丝 | 亚洲成人先锋电影| 国产精品福利av| 国产精品成人网| 国产精品理论片在线观看| 国产精品久久午夜| 亚洲乱码日产精品bd| 亚洲激情一二三区| 亚洲一二三区在线观看| 亚洲一区二区三区在线播放| 丝袜亚洲另类欧美综合| 麻豆国产欧美日韩综合精品二区| 国精产品一区一区三区mba视频 | 欧美一区二区三区在线视频| 日韩欧美在线123| 久久精品一区八戒影视| 国产精品丝袜91| 亚洲自拍偷拍网站| 男女性色大片免费观看一区二区 | 亚洲综合精品自拍| 首页综合国产亚洲丝袜| 韩国欧美国产一区| 99精品国产视频| 欧美精品三级日韩久久| 久久久久久久久99精品| 一区二区三区小说| 精品系列免费在线观看| 成人av电影免费在线播放| 欧美在线色视频| 久久久久亚洲蜜桃| 夜夜嗨av一区二区三区网页| 国产在线一区二区| 欧美系列在线观看| 久久精品一区二区三区不卡| 亚洲国产综合在线| 国产成人aaa| 欧美精品少妇一区二区三区| 欧美国产精品专区| 免费成人在线网站| 91浏览器在线视频| 久久久久久久久久美女| 亚洲国产精品一区二区久久| 国产aⅴ精品一区二区三区色成熟| 欧美在线色视频| 中文字幕电影一区| 免费一级片91| 精品视频123区在线观看| 国产免费观看久久| 久久99精品久久久久久久久久久久| 91社区在线播放| 久久久三级国产网站| 免费成人av在线播放| 欧美视频你懂的| 亚洲天堂网中文字| 岛国精品在线播放| 26uuu色噜噜精品一区| 日韩高清在线不卡| 91国偷自产一区二区开放时间| 久久久综合精品| 精品一二三四区| 欧美一区二区三区不卡| 午夜精品福利一区二区三区av| 91女神在线视频| 亚洲视频资源在线| 波多野结衣一区二区三区| 国产亚洲va综合人人澡精品| 久久激情综合网| 欧美不卡123| 国产乱淫av一区二区三区| 日韩欧美久久久| 精品一区二区在线看| www国产成人免费观看视频 深夜成人网| 日韩激情在线观看| 日韩一卡二卡三卡| 欧美a级理论片| 精品国产乱码久久久久久1区2区| 久久99热99| 久久久久国色av免费看影院| 国产成人精品一区二区三区四区| 国产亚洲制服色| 99久久久精品| 亚洲一区二区三区美女| 欧美吞精做爰啪啪高潮| 午夜精品爽啪视频| 日韩欧美国产精品一区| 国内一区二区视频| 欧美国产日产图区| 色婷婷激情综合| 午夜电影网一区| 精品国精品国产| 成人小视频在线观看| 亚洲欧美日韩在线| 欧美精品一二三| 国产一区二区三区观看| 中文字幕乱码一区二区免费| 色就色 综合激情| 欧美aaaaaa午夜精品| 国产欧美日韩亚州综合| 欧美在线不卡视频| 精品在线一区二区| 亚洲女同ⅹxx女同tv| 欧美另类videos死尸| 国产一二精品视频| 亚洲高清免费视频| 久久精品视频免费| 欧美另类久久久品| 成人av电影在线网| 免费成人在线视频观看| 亚洲欧洲精品成人久久奇米网| 欧美日韩国产综合一区二区| 国产一二精品视频| 丝袜亚洲另类欧美| 国产精品美女一区二区三区| 555夜色666亚洲国产免| www.99精品| 另类小说一区二区三区| 亚洲免费在线看| 久久欧美一区二区| 精品视频免费在线| 99精品视频中文字幕| 久久丁香综合五月国产三级网站 | 美女视频黄免费的久久| 国产精品久久国产精麻豆99网站| 69av一区二区三区| 色伊人久久综合中文字幕| 国产一区二区三区av电影| 亚洲高清免费视频| 一区二区三区在线播| 中文字幕欧美国产| 久久伊人蜜桃av一区二区| 欧美日韩精品一区二区天天拍小说| 成人在线视频一区二区| 美女网站在线免费欧美精品| 亚洲高清免费一级二级三级| 亚洲欧美日本在线| 17c精品麻豆一区二区免费| 久久综合色天天久久综合图片| 欧美一区二区三区啪啪| 欧美日韩综合在线| 在线观看一区日韩| 91精品福利视频| 91浏览器打开| 色综合天天做天天爱| 91免费观看在线| 99久久精品国产麻豆演员表| 成人国产电影网| www.亚洲激情.com| 成人免费毛片片v| 成人av资源在线| 成人h动漫精品一区二| 成人99免费视频| 99视频超级精品| 91精品福利视频| 69堂国产成人免费视频| 欧美一区二区三区免费大片 | 色综合色综合色综合| 成人国产精品免费网站| 99在线视频精品| eeuss影院一区二区三区 | 亚洲国产精品传媒在线观看| 久久亚洲影视婷婷| 亚洲一级二级三级在线免费观看| 色偷偷成人一区二区三区91| 亚洲成人第一页| 日本在线观看不卡视频| 极品少妇xxxx偷拍精品少妇| 国产福利不卡视频| 99视频精品免费视频| 欧美专区亚洲专区| 欧美一级专区免费大片| 久久影院视频免费| 国产精品区一区二区三| 亚洲精品视频一区二区| 午夜久久久影院| 国产成人精品影视| 欧美午夜电影在线播放| 欧美videos大乳护士334| 国产精品色婷婷久久58| 亚洲一区免费观看| 久久国产精品一区二区| aaa国产一区| 日韩欧美一级特黄在线播放| 国产精品情趣视频| 日韩高清欧美激情| 不卡区在线中文字幕| 欧美精品色综合| 综合分类小说区另类春色亚洲小说欧美| 亚洲一区二区三区四区五区中文| 国内精品久久久久影院色| 91香蕉视频mp4| 久久综合av免费| 五月天久久比比资源色| 成人视屏免费看| 欧美成va人片在线观看| 亚洲国产精品一区二区www| 成人高清在线视频| 日韩一区二区在线观看视频播放| 欧美国产日韩a欧美在线观看|