论文代写-英语日语韩语德语俄语法语
论文翻译-英语日语韩语德语俄语法语
论文修改-英语日语韩语德语俄语法语
代写作业代考试题考卷-英语日语韩语德语俄语法语
作文报告申请书文章等代写-英语日语韩语德语俄语法语
研究计划书代写-英语日语韩语德语俄语法语
西班牙语意大利语论文代写翻译修改
论文发表-英语日语韩语德语俄语法语
英语 English
日语 日本語
韩语한국의
法语 Français
德语 Deutsch
俄语 Pусский
西语 Español
意语 Italiano
·英语论文 ·日语论文
·韩语论文 ·德语论文
·法语论文 ·俄语论文

名称:智尚工作室
电话:0760-86388801
传真:0760-85885119
地址:广东中山市学院路1号
网址:www.zsfy.org
E-Mail:cjpdd
@vip.163.com
商务QQ:875870576
微信二维码

业务联系
隐藏文章
The Linux MTD, JFFS HOWTO
添加时间: 2012-12-19 12:12:54 来源: 作者: 点击数:9433

                      ***  The Linux MTD, JFFS HOWTO ***        
The entire MTD/DOC/JFFS (and some utils) source code may be downloaded via anonymous CVS.
Follow the following steps: 1.Make sure that you are root. 2. cd /usr/src 3. cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login (password: anoncvs) 4. cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd
This will create a dir called mtd under /usr/src
You now have two options depending on what series of the Linux Kernel you want to work with. There is an extra step involved with the 2.2 series kernels as they do not have any MTD code in them.
Note:  Check under /dev/ If you do not have devices like mtd0,1,2 and mtdblock0,1,2 etc. run the MAKEDEV utility found under mtd/util as: #sh /usr/src/mtd/util/MAKEDEV This will create all the proper devices for you under /dev
 ** With 2.2.x series kernels:
(Note that as far as I can tell, mtd and jffs does not work as modules under the 2.2.x series of kernels. If you want to do modules I would recommend that you upgrade to the 2.4.x series of kernels).
Get the 2.2.17 or 2.2.18 kernel source code from your favorite source (ftp.kernel.org) and install the kernel under /usr/src/linux-2.2.x with /usr/src/linux being a symbolic link to your kernel source dir.
Configure the kernel to your desired options (by doing a make config (or menuconfig or xconfig), and make sure that the kernel compiles ok.
Download the mtd patch from: ftp://ftp.infradead.org/pub/mtd/patches
Move the patch to /usr/src/linux and do
   patch -p1 < <patch file name here>
Make sure that the patch was applied ok without any errors. This will add the mtd functionality to your basic kernel and bring the mtd code up-to date to the date of the patch.
You have two choices here. You may do a make config and configure in mtd stuff with the current code or you may want to get the latest code from the cvs patched in.
If you want the latest CVS code patched in follow the 2.4.x directions below.
** With 2.4.x series of kernels:
If you want the latest code from CVS (available under /usr/src/mtd) do: 1. cd /usr/src/mtd/patches 2. sh patchin.sh /usr/src/linux
This will create symbolic links from the /usr/src/linux/drivers/mtd/<files here> to the respective files in /usr/src/mtd/kernel/<latest files here>
The same happens with /usr/src/linux/fs/jffs and /usr/src/linux/include/linux/mtd
Now you have the latest cvs code available with the kernel. You may now do a make config (or menuconfig or xconfig) and config the mtd/jffs etc. stuff in as described below.

 *** Configuring MTD and friends for DOC in the Kernel:
Do not use any mtd modules with the 2.2.x series of kernels. As far as I can tell, it does not work even if you can get it to compile ok.
Modules work ok with the 2.4.x series of kernels.
Depending on what you want to target you have some choices here, namely:
 *** 1. Disk On Chip Devices (DOC): For these, you need to turn on (or make into modules) the following:
* MTD core support
* Debugging (set the debug level as desired)
* Select the correct DOC driver depending on the DOC that you have.   (1000, 2000 or Millennium). Note that the CONFIG_MTD_DOC2000 option is   a driver for both the DiskOnChip 2000 and the DiskOnChip Millenium   devices. If you have problems with that you could try the alternative   DiskOnChip Millennium driver, CONFIG_MTD_DOC2001. To get the DiskOnChip   probe code to use the Millennium-specific driver, you need to edit   the code in docprobe.c and undefine DOC_SINGLE_DRIVER near the beginning.
* Unless you are doing something out of the ordinary, it shouldn't be    necessary for you to enable the "Advanced detection options for    DiskOnChip" option.
* If you do so, you can specify the physical address at which to probe   for the DiskOnChip. Normally, the probe code will probe at every   0x2000 bytes from 0xC8000 to 0xEE000. Changing the   CONFIG_MTD_DOCPROBE_ADDRESS option will allow you to specify a   single location to be probed. Note that your DiskOnChip is far    more likely to be mapped at 0xD0000 than 0xD000. Use the real physical   address, not the segment address.
  If you leave the address blank (or just don't enable the advanced    options), the code will *auto probe*. This works quite well (at    least for me). Try it first.
* Probe High Addresses will probe in the top of the possible memory   range rather than in the usual BIOS ROM expansion range from 640K -   1 Meg. This has to do with LinuxBIOS. See the mailing list archive for   some e-mails regarding this. If you don't know what I am talking   about here, leave this option off.
* Probe for 0x55 0xaa BIOS signature. Unless you've got LinuxBIOS on your   DiskOnChip Millennium and need it to be detected even though you've    replace the IPL with your chipset setup code, say yes here.
Leave everything else off, till you reach... User Modules and Translation layers: * Direct char device access - yes * NFTL layer support - yes * Write support for NFTL(beta) - yes
Note that you don't need 'MTDBLOCK' support. That is something entirely  different - a caching block device which works directly on the flash  chips without wear levelling.
Save everything, make dep, make bzImage, make modules, make modules_install
Note: If you downloaded the 2.4.x series kernels and your original installed distribution came with the 2.2.x series of kernels then you need to download the latest modutils (from ftp.kernel.org/utils/kernel), else make modules_install or depmod -a will fail for the new 2.4.x kernels.
Move everything to the right place, install the kernel, run lilo and reboot.
If you compiled the mtd stuff into the kernel (see later section if you compiled as modules- which is what I prefer as you don't have to keep rebooting) then look for the startup messages. In particular pay attention to the lines when the MTD DOC header runs. It will say something like:
"DiskOnChip found at address 0xD0000 (your address may be different)" "nftla1"
The above shows that the DOC was detected fine and one partition was found and assigned to /dev/nftla1. If further partitions are detected, they will be assigned to /dev/nftla2 etc.
Note that the MTD device is /dev/mtd0 and details are available by doing a:
#cat /proc/mtd dev:    size   erasesize  name mtd0: 02000000 00004000 "DiskOnChip 2000"
/dev/nftla1,2,3  are "regular" block disk partitions and you may mke2fs on them to put a ext2 fs on it. Then they may be mounted in the regular way.
When the DiskOnChip is detected and instead of nftla1,2,3... you get something like:
"Could not find valid boot record" "Could not mount NFTL device"
...first make sure you have the latest DiskOnChip and NFTL code from the CVS repository.
If that doesn't help you, especially if the driver has previously exhibited strange and buggy behaviour, and if the DOS driver built into the device no longer works, then it's possible that you have a "hosed" (that's a technical term) disk. You need to "un-hose" it. To help you out in that department there is a utility available under /usr/src/mtd/util called nftl_format.
DO NOT EVER USE THE nftl_format UTILITY WITHOUT FIRST SEEKING ADVICE ON THE MAILING LIST. It will erase all blocks on the device, potentially losing the factory-programmed information about bad blocks. (Someone really ought to fix it one of these days - ed)
Essentially after your disk have been detected but complains about "Could not mount NFTL device", just run #./nftl_format /dev/mtd0 (if your device was installed under mtd0, see cat /proc/mtd/).
You should unload the nftl driver module before using the nftl_format utility, and reload it afterwards. Reformatting the NFTL underneath the driver is not a recipe for happiness. If the driver hasn't recognised the NFTL format, then it's safe - reboot or reload the module after running nftl_format and it should then recognise it again.
If your device "erasesize" is 8k (0x2000), then the utility will go ahead and format it. Just reboot and this time the drivers will complain about an "unknown partition table".
Don't worry. Just do: # fdisk /dev/nftla
and create some partitions on them. TaDa! You may now e2fsck and others on these partitions. Note that if you don't want more than one partition you don't need to muck about with partitions at all - just make a filesystem on the whole device /dev/nftla instead of partitioning and using /dev/nftla1.
*** IF you compiled the mtd stuff as modules (What I prefer): Make sure that you have done a depmod -a after you reboot with the new kernel.
Then just #modprobe -a doc2000 nftl mtdchar mtdblock
You have now loaded the core stuff. The actual detection takes place only when you load the docprobe module. Then do #modprobe -a docprobe
You should then see the messages described in the section above. Follow the directions and procedures are outlined in the section above (where you would have compiled the mtd/DOC stuff into the kernel).


*** 2. Raw Flash (primarily NOR) chips
This are multiple (or just one) flash IC's that may be soldered on your board or you may be designing some in. Unlike the DOC device, these are usually linearly memory mapped into the address space (though not necessarily, they may also be paged).
MTD can handle x8, x16 or x32 wide memory interfaces, using x8, x16 (even x32 chips (are they such a thing)?- confirm).
At present CFI stuff seems to work quite well and these are the type of chips on my board. Hence I will describe them first. Maybe someone with JEDEC chips can describe that.
You must use (for all practical purposes that involve writing) JFFS on raw flash MTD devices. This is because JFFS provides a robust writing and wear leveling mechanism. See FAQ for more info.
If you only want the file-system to be writable while you're developing, but will ship the units read-only, it's acceptable to use the MTDBLOCK  device, which performs writes by reading the entire erase block, erasing it, changing the range of bytes which were written to, and writes it back to the flash. Obviously that's not something you want happening in production, but for development it's OK.
 *** Configuring the kernel with MTD/CFI/JFFS and friends.  Turn off all options for MTD except those mentioned here.
* MTD support (the core stuff) * Debugging -yes (try level 3 initially) * Support for ROM chips in bus mapping -yes * CFI (common flash interface) support -yes * Specific CFI flash geometry selection -yes * <select they FLASH chip geometry that you have on your board> * If you have a 32 bit wide flash interface with 8bit chips, then you   have 4 way interleaving, etc. Turning on more than one option does   not seem to hurt anything * CFI support for Intel.Sharp or AMD/Fujitsu as your particular case   may be. * Physical mapping of flash chips - set your config here or if you   have one of the boards listed then select the board as the case may   be.
Then under "File systems" select: * jffs and  * /proc file-system support right under that. * Select a jffs debugging verbosity level. Start high then go low.
Save, make dep, make bzImage, make modules, make modules_install, move kernel to correct spot, add lilo entries, run lilo (or your fav. boot loader) and reboot.
If you have compiled the stuff as modules then do (as root): # depmod -a # modprobe -a mtdchar mtdblock cfi_cmdset_0002 map_rom cfi_probe
This loads the core modules for cfi flash. Now we probe for the actual flash by doing: #modprobe -a physmap
Look at the console window (Note if you are telnet'd into the machine, then the console may be outputting on tty0 which may be the terminal connected to the graphics card). Being able to see the console is very important. You may also view kernel console messages at /var/log/messages (this depends on the distribution you are using. This is true for Red Hat).
Don't be fooled by the message: "physmap flash device:xxxxx at yyyyyyy"
This is just reporting what parameters you have compiled into the system (see above under "Physical mapping of flash chips".
If your flash is really detected then it will print something like: "Physically mapped flash: Found bla-bla-bla at location 0".
If no device is found, then physmap will refuse to load as a module! This is not a problem with compiling it as a module or with physmap or modprobe itself. Unfortunately this is the hard part. You have to dive into the routine "do_cfi_probe()" called from physmap.c.
Caution! physmap.c uses ioremap() to map the physical memory into an area of logical memory. If your processor has a cache in it, then modify physmem to use ioremap_nocache(), else you will tear your hair out as your flash chips will never be detected.
This routine is called cfi_probe() and is in the file "cfi_probe.c" under mtd/kernel/
Sprinkle the file with printk's to see why your chips were not detected. If your chips are detected, then when you load physmap (by doing a "modprobe physmap", you will see something like:
"Physically mapped flash: Found bla-bla-bla at location"
Now, the chips have been registered under mtd and you should see them by doing a: #cat /proc/mtd

*** Putting a jffs file system on the flash devices:
Now that you have successfully managed to detect your flash devices, you need to put a jffs on them. Unlike mke2fs there is no utility that will directly create a jffs file-system onto the /dev/mtd0,1,2... device.
You have to use a utility called mkfs.jffs available under mtd/util
Get a directory ready with the stuff that you want to put under jffs. Let's assume that it's called /home/jffsstuff
Then just do: #/usr/src/mtd/util/mkfs.jffs -d /home/jffsstuff -o /tmp/jffs.image
This makes a jffs image file. Then do (if your flash chips are erased, else see below): #cp  /tmp/jffs.image /dev/mtd0,1,2... (as the case may be, most likely /dev/mtd0).
You may also mount an erased mtdblock device directly without putting a file system on it. This will let you fill the device interactively under your shell control (you know- copy stuff to the mounted dir).
If your flash chips are not erased or you have been messing around with them earlier, your cannot just copy the new image on top of the older one. Bad things may happen. Use the program mtd/util/erase to erase your device.
#/usr/src/mtd/util/erase /dev/mtd0,1,2,3 <offset> <erase-size> where  offset: try 0 if you don't know (start of mtd device), else must be in decimal bytes, but must start at an integral erase sector boundary.
 erase-size: How many "erase sectors" worth do you want to erase. Your max erase size for your flash is:  (total-size/your mtd device erase size- look under `cat /proc/mtd`)
 Watch the messages on your console (assuming you have verbose turned on when you configured your kernel). You should not see any errors.
When your command prompt returns, do: #cp  /tmp/jffs.image /dev/mtd0,1,2... (as the case may be, most likely /dev/mtd0).
 Then load the jffs module in by: #modprobe jffs
Then mount the file system by: #mount -t jffs /dev/mtdblock0 /mnt/jffs (assuming /mnt/jffs exists, else make it).
Note: Note the use of /dev/mtdblock0 NOT /dev/mtd0. "mount" needs a block device interface and /dev/mtdblock0,1,2,3... are provided for that purpose. /dev/mtd0,1,2,3 are char devices are provided for things like copying the binary image onto the raw flash devices.

 *** Making partitions with CFI flash and working with multiple banks     of FLASH:
Unlike a "regular" block device, you cannot launch fdisk and create partitions on /dev/mtdblock0,1,2,3...
(As far as I know) CFI flash partitions have to be created and compiled in the physmap.c file.
The same goes for multiple banks of flash memory. (IS THIS CORRECT???? Check and correct.)
An example of creating partitions can be found in the file mtd/kernel/sbc_mediagx.c
An example of multiple banks of flash chips being mapped into separate /dev/mtdn devices can be found in the file mtd/kernel/octagon_5066.c (in particular pay attention to the multiple looping of the code while registering the mtd device in "init_oct5066()". You may also add partitions to each bank by looking at code in mtd/kernel/sbc_mediagx.c

 *** Mounting a JFFS(1 or 2) F/S as root device. This is rather simple.
*Note: This assumes that you can some how boot your kernel. This section does NOT deal with booting your kernel from an mtd partition or device. You may be doing this by booting your kernel off an IDE flash disk/CF disk etc. using lilo. This procedure is the same even when you want to boot the kernel directly off flash. This time you will just burn the kernel into the raw flash device after the "rdev" step below.
1. Make sure that you can detect your flash devices and read and write    them though the MTD device nodes (/dev/mtdn). 2. Make sure than you can mount the required JFFS(1 or 2) f/s on your    flash devices and copy files to it, unmount, reboot, re-mount and    still see your files there (also do a "diff" on a couple of files    to make sure that the data did not get corrupted). 3. Compile all the required MTD/JFFS(1/2) support into the kernel    (using modules to mount root is left as an exercise for the    reader). 4. Tell the kernel what your root device is going to be. Do that by: # rdev <your flash image here> /dev/mtdblock<n> where mtdblock<n> is where you have constructed your root fs that you    want to mount as root on reboot. 5. Run your boot loader init program (lilo for LILO bootloader). 6. Reboot. Your jffs mtdblock<n> partition should be mounted as root.

 *** Mounting a *compressed* ext2 file system stored on an mtd     partition or device as root. Ah! Ha! This is much more fun (and complicated). Prerequisites: a. You must have ramdisk support in your development system kernel at     least as large as the final root f/s that will be mounted in your     target. This is for compressing the root f/s only. If you already     have a ready-to-go compressed root f/s then you can skip this     stage.
Steps: 1. Make a "root" file system on your mtd enabled development     system. (mtd "enabled" means that you are running a kernel that     supports mtd and that you can write to your mtd flash devices from     your development station). The creation of this "root" file system     is left to the reader. There are numerous ready available root f/s     out on the net. Use any one or create your own (this is not     necessarily fun if you have never done this before).
2. Make an ext2 f/s in ramdisk as large as you want the final uncompressed root f/s to be. Do that as thus:
#mke2fs /dev/ram0 <you_root_fs_size_in_1k_blocks_here>
3. Mount this empty f/s on a free dir under /mnt as:
#mount -t ext2 /dev/ram0 /mnt/ramdisk
4. Copy your "root fs" dir that you have so carefully made over to    this ramdisk.
#cp -af /tmp/my_final_root_fs_files/* /mnt/ramdisk
5. If you have done everything right till now you should be able to    see the required "root" dir's (that's etc, root, bin, lib, sbin...)    if you do a:
# ls -ld /mnt/ramdisk
6. Now unmount and compress the file system.
#umount /mnt/ramdisk
#dd if=/dev/ram0 bs=1k count=<your_root_fs_size_in_1k_blocks> | gzip \          -9 > /tmp/compressedRootFS.gz
7. Now we have to tell your kernel that will be mounting this    compressed file system that this is a compressed f/s and where to    find it on the mtd device.    Make sure that your mtd stuff is all compiled into the    kernel. Additionally you must make the following 2 changes to the    kernel. This applies both to the 2.2.x and 2.4.x series.
   A. In the file drivers/block/rd.c you must comment out the check    made for ROOT_DEV to be a floppy device. This code usually looks    like:
        if (MAJOR(ROOT_DEV) != FLOPPY_MAJOR #ifdef CONFIG_BLK_DEV_INITRD                 && MAJOR(real_root_dev) != FLOPPY_MAJOR #endif         )                 return;
   You must *NOT* return here, as your ROOT_DEV will *NOT* be a floppy    device, it will be the mtd block device.
   B. At this time, due to the link order the rd_load() call to load    any compressed files systems into ramdisk are made before the mtd    driver has a chance to register the mtd block device. This causes    the rd_load() code to fail to find your root device to load your    compressed f/s from.    Till this issue is fixed in the kernel, you have to make another    explicit call to rd_load() right before mount_root() in main.c    So, just add a call to rd_load() immediately before mount_root() in    init/main.c
   C. Now compile the kernel with mtd and ext2 support in it (not as    modules).     8. Now tell your target kernel (before installing it in the target)    that you want it to load a compressed f/s and where this compressed    image lies.    There are two ways to do this. The easy way (using command line    parameters) and the difficult way.    We will do this the difficult way. Figuring out the easy way is    left as an exercise for the reader.    No, I don't usually like to do things the difficult way just for    the fun of it, there is a reason behind this.
   I'm moving towards booting a Linux kernel out of raw flash, without    the help of a boot load. In that situation we will not have any    means to pass any kernel command line parameters.
   Tell the target kernel that you want to load a compressed f/s and    where your image can be found as thus:
#rdev -r <your_target_kernel_image> <offset_number_in_dec>
where offset_number_in_dec is calculated as follows: This number is the decimal equivalent of a binary number which is made of various bits. Bits 0-9 specify in 1KB blocks the offset from the start of the root device. Bit  14 specifies if a (compressed in our case) ramdisk needs to be loaded- obviously a yes! Why else are you reading this! Other Bits: Set to zero.
Just as a sanity check, 17408 is the number that you plug in as the 2nd parameter to the rdev -r above for the following. This numbers tells the kernel that the offset is 1024 1kblocks (i.e. find and load the compressed image found at the 1 Megabyte offset from the start of the mtd device and mount it at the root device).
Note: If this bit pattern ever changes or you are doubtful of my sanity, please go to arch/i386/kernel/setup.c file and look at the various #define masks there. That's where all this bit magic comes from.
9. Now tell your target kernel what your root device is going to be:
#rdev <your_target_kernel> /dev/mtdblock<0,1,2....n>
10. Now of course you need to copy your compressed f/s image to the     proper offset in your mtd device. Making sure that your target     device is erased do:
#dd if=/tmp/compressedRootFS.gz bs=1k of=/dev/mtd<0,1,2....n>  seek=<num of 1k blocks, in k, here that you told your kernel in  above>
So for the 1Meg offset boundary you would put seek=1024
Note: "dd" is going to complain about "operation not permitted" or some such thing. Just ignore that. dd tries to truncate the o/p device, but mtd of course in not going to let somebody like "dd" truncate it. The copy should go on just find.
11. Sanity check (year's of experience has taught me to triple check     every step twice ;)   Let's make sure that you got the compressed image in ok.
12. We will look at the first few bytes of both images and make sure     that they are ok. You can also "dd" the target image back to a     file and do a diff on it (left as an exercise for the reader).
#dd if=/dev/mtd<0,1,2...n> bs=1k skip=1024 (or your 1k offset in k) \        od -Ax -tx1 |less Jot down the first few lines. (note the use of "skip" in above, NOT        "seek").
Now let's look at your compressed root f/s file on your hard disk: #dd if=/tmp/compressedRootFS.gz | od -Ax -tx1 | less
Compare with the stuff that you jotted down above. They should match (did I need to say that?).
13. Install your kernel however way you are going to boot it (run lilo     if you are going to boot using LILO) or place it where it will     boot from any other boot loader (or directly from flash etc.).
14. Reboot. This time, you should see the ramdisk loading code run     twice and find the compressed image the second time and VFS mount     it as root.
Ship it and ask for a pay raise (and send me some of that too)!


*** Booting a Linux kernel without a BIOS off an mtd device and     mounting a compressed root file system stored on that device.
This is the holy grail of embedded Linux computing :) I shall attempt to describe how to do this here. Note that at best this can only be a guide as one embedded system differs a *lot* for another, not only in terms of memory maps, but type of processors, type of flash, amount of RAM etc.
* Assumptions: This will (may) help you if your requirements meet the following: You want to:
1. Use the standard Linux kernel as found when you download the entire kernel from ftp.kernel.org
2. Know how to initialize your processor and chipset. This would include, memory map (and chip select decode registers etc.). You should be able to read/write the RAM and flash (if NOR type) from a "simple" init program that you or you hardware guy wrote to test the board. (Note: If you intend to use a BIOS, then this restriction goes away).
3. You are way ahead of the game if your target platform supports an IDE hard disk (note: This is just for the development phase. We will not end up with the hard disk in the final cut). This may not be an unreasonable requirement. You may be able to buy an "eval" or "development" board for the target processor that has a BIOS and supports an IDE disk and serial console at the very least.
4. Do not think that compiling the kernel about 100-200 times is too much effort to get this working ;)
 * Overview: We will follow the following steps: 1. Setup and boot linux on the target platform using a hard disk.
2. Take a beer break, take our spouse/(girl/boy)friend out for dinner as they will not see you for a while.
3. Setup mtd drivers so that you can read/write the flash and mount a jffs on it. At this stage we will use modules.
4. Once we are happy and comfortable with #3 above, compile the mtd/jffs stuff into the kernel to prepare for booting. At this stage we will install the kernel on the hard disk and the compressed file system on the mtdblock device and boot that. Then we will either do 5a or 5b as you desire.
 

智尚简介  |  诚聘英才  |  联系我们  |  友情链接
版权所有:@2007-2009 智尚 电话:0760-86388801 客服QQ:875870576
地址:广东中山市学院路1号 邮编:528402 皖ICP备12010335号-8
  • 《飘》与《倾城之恋》中女性形象比较
  • 中国大学法语专业毕业论文写作研究
  • 韩语专业毕业论文写作探索
  • 高职日语专业毕业论文测评体系思考
  • 日语专业毕业论文选题问题
  • 日语专业本科毕业论文现状调查与分析
  • 境外将美元汇入中国方法渠道方式
  • 财产、厂房和设备按照IAS16审计
  • IFRS:國際財務報告準則
  • IFRS:國際財務報告準則
  • 德国酒店中德两国文化的交融和冲突
  • 工业翻译中译英考试题目
  • Introduction to en
  • 从汉法主要颜色词汇的文化内涵看两国文
  • Un problème chez &
  • INTERNATIONAL AND
  • IHRM Individual re
  • НАЦИОНАЛЬНО-КУЛЬТУ
  • ТЕОРЕТИЧЕСКИЕ ОСНО
  • SPE会议论文翻译
  • Project Proposal 地
  • 中国意大利家用电器领域合作的可能性和
  • Career Goal与Career
  • Caractéristiques e
  • L'influence de l'S
  • 英语口语教学改革途径测试与分析
  • 语用学理论与高校英语阅读教学
  • 日本语研究计划书写作申请
  • To Whom it May Con
  • 译文中英对照葡萄酒产品介绍
  • 韩国传统用餐礼节
  • 日本語の暧昧語婉曲暧昧性省略表現以心
  • 研究计划书写作要求
  • Outline Impact of
  • 计算机工程与网络技术国际学术会议EI
  • 微软的人脸3D建模技术 Kinect
  • Qualitative resear
  • 新闻的感想
  • 与老师对话的测验
  • 韩语论文修改意见教授老师
  • 华南师范大学外国语言文化学院英语专业
  • APA论文写作格式
  • the surrounding en
  • Современное состоя
  • CHIN30005 Advanced
  • The APA Harvard Sy
  • Annotated Bibiolgr
  • Acker Merrall & Co
  • 资生堂进入中国市场的经营策略
  • Introduction to Pu
  • 软件测试Introduction t
  • Pro Ajax and java
  • 用户体验The user exper
  • AJAX Design Patter
  • The Rich Client Pl
  • Keyframer Chunks
  • 3D-Studio File For
  • Mathematics for Co
  • The Linux MTD, JFF
  • 中日体态语的表现形式及其差异
  • CB 202 System Anal
  • 论日本恐怖电影与好莱坞恐怖片的异同
  • 俄语论文修改
  • 古典诗歌翻译英语论文资料
  • <한중
  • 公司治理(Corporate Gov
  • 英语习语翻译中的移植与转换
  • 日语(上) 期末复习题
  • ACTIVIDAD CORRESPO
  • 리더&#
  • 购物小票翻译
  • 论文摘要翻译英文
  • Bedeutung der Prod
  • ELABORACIÓN
  • 英语考卷代写代做
  • 日本語の感情形容詞の使用特徴——ドラ
  • 未来創造学部卒業研究要領
  • 光之明(国际)低碳产品交易中心介绍
  • 中国の茶文化と日本茶道との比較—精神
  • 목차
  • Final Project Grad
  • 東京学芸大学>センターなど教員許 夏
  • 東京学芸大学 大学院教育学研究科(修
  • 白澤論
  • ポスト社会主義モンゴルにおけるカザフ
  • 言語と色彩現象—史的テクストをもとに
  • 渡来人伝説の研究
  • 中日企业文化差异的比较
  • Modellierung des B
  • 日本大学奖学金申请
  • 大学日语教师尉老师
  • 석사&#
  • Chemical Shift of
  • 中韩生日习俗文化比较
  • Measure of Attachm
  • 酒店韩国客人满意度影响因素研究
  • 要旨部分の訂正版をお送りします
  • Writing and textua
  • 日本企業文化が中国企業にもたらす啓示
  • 日本情报信息专业考试题
  • 雅丽姿毛绒时装有限公司网站文案(中文
  • 語用論の関連性理論「carston」
  • 組織行動と情報セキュリティ.レポート
  • Bedarf
  • 中日企业文化差异的比较
  • 从语形的角度对比中日“手”语义派生的
  • 中国明朝汉籍东传日本及其对日本文化的
  • 《中日茶道文化比较》
  • 从中日两国电视剧看中日文化之差异
  • FOM Hochschule für
  • Die Rolle der Bank
  • A Penny for Your T
  • 也谈ガ行鼻浊音的语音教学问题
  • On the Difference
  • 衣装は苗族の伝統文化の主な表現形式
  • 日语语言文学硕士论文:日本の义务教育
  • 日本的茶文化
  • Samsung Electronic
  • Synthesis and char
  • The traveling mark
  • The Japanese Democ
  • 四季の歌
  • CapitoloI La situa
  • The Effects of Aff
  • WEB服务安全保障分析
  • 音译汉语和英语的相互渗透引用
  • 中日两国服装贸易日语论文写作要求
  • 日语论文修改意见
  • 英语作文题目
  • 申请留学社会经验心得体会
  • BE951 Coursework O
  • Overview township
  • 日本の長寿社会考察
  • 日语老师教师电话联系方式
  • 「依頼」に対する中上級者の「断り」に
  • 日本語序論
  • component formatti
  • 日文文献资料的查阅方法
  • 日文文献资料的查阅方法
  • 日语文献检索日文文献搜索网站
  • 日本留学硕士及研究生的区别硕士申请条
  • Adult attachment s
  • レベルが向上する中国の日本学研究修士
  • 日本留学硕士(修士)与研究生的区别
  • Nontraditional Man
  • Engine Lathes
  • Automatic Screw M
  • Chain Drives
  • V-belt
  • Bestimmung der rut
  • 中山LED生产厂家企业黄页大全
  • 活用神话的文化背景来看韩国语教育方案
  • MLA論文格式
  • 旅游中介
  • MLA论文格式代写MLA论文
  • 小論文參考資料寫作格式範例(採APA
  • clothing model; fi
  • 共同利用者支援システムへのユーザー登
  • 太陽風を利用した次世代宇宙推進システ
  • RAO-SS:疎行列ソルバにおける実
  • 井伏鱒二の作品における小動物について
  • 從“老祖宗的典籍”到“現代科學的証
  • “A great Pecking D
  • 净月法师简历
  • 科技论文中日对照
  • 翻译的科技论文节选
  •  IPY-4へ向ける準備の進み具合
  • 論文誌のJ-STAGE投稿ʍ
  • Journal of Compute
  • 学会誌 (Journal of Co
  • 学会誌JCCJ特集号への投稿締切日の
  • 「化学レポート:現状と将来」
  • 韩语翻译个人简历
  • 九三会所
  • 事態情報附加連体節の中国語表現につい
  • International Bacc
  • HL introduction do
  • コーパスを利用した日本語の複合動詞の
  • 日语分词技术在日语教材开发中的应用构
  • 北極圏環境研究センター活動報告
  • 语用学在翻译中的运用
  • 日汉交替传译小议——从两篇口译试题谈
  • 総合科学専攻における卒業論文(ミニ卒
  • Heroes in August W
  • 玛雅文明-西班牙语论文
  • 西班牙语论文-西班牙旅游美食建筑
  • 八戸工業大学工学部環境建設工学科卒業
  • 親の連れ子として離島の旧家にやって来
  • 「米ソ協定」下の引揚げにおいて
  • タイトル:少子化対策の国際比較
  • メインタイトル:ここに入力。欧数字は
  • 東洋大学工学部環境建設学科卒業論文要
  • IPCar:自動車プローブ情報システ
  • Abrupt Climate Cha
  • Recognition of Eco
  • Complexities of Ch
  • Statistical Analys
  • Dangerous Level o
  • 中日对照新闻稿
  • 俄汉语外来词使用的主要领域对比分析
  • 两种形式的主谓一致
  • 韩语论文大纲修改
  • 중국&#
  • 俄语外来词的同化问题
  • 北海道方言中自发助动词らさる的用法与
  • 论高职英语教育基础性与实用性的有机结
  • 论高职幼师双语口语技能的培养
  • 论高职幼师英语口语技能的培养
  •     自分・この眼&
  • 成蹊大学大学院 経済経営研究科
  • アクア・マイクロ
  • 公共経営研究科修士論文(政策提言論文
  • 基于学习风格的英语学习多媒体课件包
  • 后殖民时期印度英语诗歌管窥
  • 汉语互动致使句的句法生成
  • 笔译价格
  • 携帯TV電話の活用
  • 英語学習におけるノートテイキング方略
  • 強化学習と決定木によるエージェント
  • エージェントの行動様式の学習法
  • 学習エージェントとは
  • 強化学習と決定木学習による汎用エージ
  • 講演概要の書き方
  • 对学生英语上下义语言知识与写作技能的
  • 英汉词汇文化内涵及其翻译
  • 论大学英语教学改革之建构主义理论指导
  • 国内影片片名翻译研究综观及现状
  • 平成13年度経済情報学科特殊研究
  • Comparison of curr
  • 英文论文任务书
  • This project is to
  • the comparison of
  • デジタルペンとRFIDタグを活用した
  • 無資格者無免許・対策関
  • 創刊の辞―医療社会学の通常科学化をめ
  • gastric cancer:ade
  • 揭示政治语篇蕴涵的意识形态
  • 试论专业英语课程项目化改革的可行性
  • 多媒体环境下的英语教学交际化
  • 翻译认知论
  • 读高桥多佳子的《相似形》
  • 以英若诚对“Death of A S
  • 论沈宝基的翻译理论与实践
  • 论语域与文学作品中人物会话的翻译
  • 浅析翻译活动中的文化失衡
  • 谈《傲慢与偏见》的语言艺术
  • 论语言结构差异对翻译实效性的影响
  • 英语传递小句的认知诠释
  • 英语阅读输入的四大误区
  • 在语言选择中构建社会身份
  • 私たちが見た、障害者雇用の今。
  • 震災復興の経済分析
  • 研究面からみた大学の生産性
  • 喫煙行動の経済分析
  • 起業の経済分析
  • 高圧力の科学と技術の最近の進歩
  • 「観光立国」の実現に向けて
  • 資源としてのマグロと日本の動向
  • 揚湯試験結果の概要温泉水の水質の概要
  • 計量史研究執筆要綱 
  • 日中友好中国大学生日本語科卒業論文
  • 제 7 장
  • 전자&
  • 現代國民論、現代皇室論
  • 記紀批判—官人述作論、天皇宗家論
  • 津田的中國觀與亞洲觀
  • 津田思想的形成
  • 反思台灣與中國的津田左右吉研究
  • 遠隔講義 e-learning
  • 和文タイトルは17ポイント,センタリ
  • Design And Impleme
  • Near-surface mount
  • 중국 &
  • 韩国泡菜文化和中国的咸菜文化
  • 무한&#
  • 수시 2
  • 韩流流向世界
  • 무설&#
  • 要想学好韩语首先得学好汉语
  • 사망&#
  • Expression and Bio
  • Increased Nuclear
  • 论女性主义翻译观
  • 健康食品の有効性
  • 日语的敬语表现与日本人的敬语意识
  • 日语拒否的特点及表达
  • Solve World’s Prob
  • 韩汉反身代词“??”和“自己”的对比
  • 韩汉量词句法语义功能对比
  • 浅析日语中的省略现象
  • 浅谈日语中片假名的应用
  • 土木学会論文集の完全版下印刷用和文原
  • 英语语调重音研究综述
  • 英汉语言结构的差异与翻译
  • 平等化政策の現状と課題
  • 日本陸軍航空史航空特攻
  • 商务日语专业毕业生毕业论文选题范围
  • 家庭内暴力の現象について
  • 敬语使用中的禁忌
  • Treatment of high
  • On product quality
  • Functional safety
  • TIDEBROOK MARITIME
  • 日文键盘的输入方法
  • 高职高专英语课堂中的提问策略
  • 对高校学生英语口语流利性和正确性的思
  • 二语习得中的文化错误分析及对策探讨
  • 高职英语专业阅读课堂教学氛围的优化对
  • 趣谈英语中的比喻
  • 浅析提高日语国际能力考试听力成绩的对
  • 外语语音偏误认知心理分析
  • 读格林童话《小精灵》有感
  • “新世纪”版高中英语新课教学导入方法
  • 初探大学英语口语测试模式与教学的实证
  • 中加大学生拒绝言语行为的实证研究
  • 目的论与翻译失误研究—珠海市旅游景点
  • 对学生英语上下义语言知识与写作技能的
  • 英语水平对非英语专业研究生语言学习策
  • 英语教学中的文化渗透
  • 中学教师自主学习角色的一项实证研究
  • 叶维廉后期比较文学思想和中诗英译的传
  • 钟玲中诗英译的传递研究和传递实践述评
  • 建构主义和高校德育
  • 论习语的词法地位
  • 广告英语中的修辞欣赏
  • 从奢侈品消费看王尔德及其唯美主义
  • 论隐喻的逆向性
  • 企盼和谐的两性关系——以劳伦斯小说《
  • 论高等教育大众化进程中的大学英语教学
  • 试论《三四郎》的三维世界
  • 李渔的小说批评与曲亭马琴的读本作品
  • 浅谈中国英语的表现特征及存在意义
  • 湖南常德农村中学英语教师师资发展状况
  • 海明威的《向瑞士致敬》和菲茨杰拉德
  • 围绕课文综合训练,培养学生的写作能力
  • 指称晦暗性现象透析
  • 西部地区中学生英语阅读习惯调查
  • 论隐喻的逆向性
  • 认知体验与翻译
  • 试析英诗汉译中的创造性
  • 言语交际中模糊语浅议
  • 认知体验与翻译
  • 关于翻译中的词汇空缺现象及翻译对策
  • 从互文性视角解读《红楼梦》两译本宗教
  • 从目的论看中英动物文化词喻体意象的翻
  • 高校英语语法教学的几点思考
  • 高校体艺类学生外语学习兴趣与动机的研
  • 大学英语自主学习存在的问题及“指导性
  • 从接受美学看文学翻译的纯语言观
  • 《红楼梦》两种英译本中服饰内容的翻译
  • 法语对英语的影响
  • 影响中美抱怨实施策略的情景因素分析
  • 代写需求表
  • 跨文化交际中称赞语的特点及语言表达模
  • 实现文化教育主导外语教育之研究
  • 试论读者变量对英语阅读的影响
  • 从文化的角度看英语词汇中的性别歧视现
  • 合作原则在外贸函电翻译中的运用
  • Default 词义探悉
  • 从图示理论看英汉翻译中的误译
  • 许国璋等外语界老前辈所接受的双语教学
  • “provide” 和 “suppl
  • 由英汉句法对比看长句翻译中的词序处理
  • 1000名富翁的13条致富秘诀中英对
  • 英语中18大激励人心的谚语中英对照
  • 反省女性自身 寻求两性和谐---评
  • 浅析翻译中的“信”
  • 集体迫害范式解读《阿里》
  • 横看成岭侧成峰-从美学批评角度解读《
  • 福柯的话语权及规范化理论解读《最蓝的
  • 播客技术在大学英语教学中的应用
  • 如何在山区中等专业学校英语课堂实施分
  • 奈达与格特翻译理论比较研究
  • 语篇内外的衔接与连贯
  • Economic globaliza
  • 用概念整合理论分析翻译中不同思维模式
  • 英语新闻语篇汉译过程中衔接手段的转换
  • 对易卜生戏剧创作转向的阐释
  • 动词GO语义延伸的认知研究
  • 反思型教师—我国外语教师发展的有效途
  • 输入与输出在词汇学习中的动态统一关系
  • 教育实践指导双方身份认同批判性分析
  • 中英商务文本翻译异化和归化的抉择理据
  • 从艺术结构看《呼啸山庄》
  • 从儒家术语“仁”的翻译论意义的播撒
  • 论隐喻与明喻的异同及其在教学中的启示
  • 话语标记语的语用信息在英汉学习型词典
  • 论森欧外的历史小说
  • 翻译认知论 ——翻译行为本质管窥
  • 中美语文教材设计思路的比较
  • 美国写作训练的特点及思考
  • UP语义伸延的认知视角
  • 成功的关键-The Key to S
  • 杨利伟-Yang Liwei
  • 武汉一个美丽的城市
  • 对儿童来说互联网是危险的?
  • 跨文化交际教学策略与法语教学
  • 试论专业英语课程项目化改革的可行性-
  • 论沈宝基的翻译理论与实践
  • 翻译认知论——翻译行为本质管窥
  • 母爱的虚像 ——读高桥多佳子的《相似
  • 浅析英语广告语言的特点
  • 中国の株価動向分析
  • 日语拒否的特点及表达
  • 日语的敬语表现与日本人的敬语意识
  • 浅析日语中的省略现象
  • 浅谈日语中片假名的应用
  • 浅谈日语敬语的运用法
  • 浅谈日语会话能力的提高
  • ^论日语中的年轻人用语
  • 敬语使用中的禁忌
  • 关于日语中的简略化表达
  • 关于日语的委婉表达
  • The Wonderful Stru
  • Of Love(论爱情)
  • SONY Computer/Notb
  • 从加拿大汉语教学现状看海外汉语教学
  • MLA格式简要规范
  • 浅析翻译类学生理解下的招聘广告
  • 日本大学排名
  • 虎头虎脑
  • 杰克逊涉嫌猥亵男童案首次庭审
  • Throughout his car
  • June 19,1997: Vict
  • 今天你睡了“美容觉”吗?
  • [双语]荷兰橙色统治看台 荷兰球员统
  • Father's Day(异趣父亲节
  • 百佳电影台词排行前25名
  • June 9,1983: Thatc
  • June 8, 1968: Robe
  • 60 players mark bi
  • June 6, 1984: Indi
  • 日本の専門家が漁業資源を警告するのは
  • オーストリア巴馬は模範的な公民に日本
  • 日本のメディアは朝鮮があるいは核実験
  • 世界のバレーボールの日本の32年の始
  • 日本の国債は滑り降りて、取引員と短い
  • 广州紧急“清剿”果子狸
  • 美国“勇气”号登陆火星
  • 第30届冰灯节哈尔滨开幕
  • 美国士兵成为时代周刊2003年度人物
  • BIRD flu fears hav
  • 中国チベット文化週間はマドリードで開
  • 中国チベット文化週間はマドリードで開
  • 中国の重陽の文化の発祥地──河南省西
  • シティバンク:日本の国債は中国の中央
  • イギリスは間もなく中国にブタ肉を輸出
  • 古いものと新しい中国センター姚明の失
  • 中国の陝西は旅行して推薦ӥ
  • 中国の電子は再度元手を割って中国の有