uclinux Blackfin support@besovideo.com
QQ 21ic http://bbs.21ic.com/club/bbs/bbsview.asp?boardid=51 24! support@besovide o.com R&D
BF561 Linux
C
MemoryMAP 32 X86 *((volatile unsigned short *)(0x10000300))=0xf0c0; *((volatile unsigned long *)(0x56000020))&=0xffffcfcf;
64MB BANK
0x2C000000 0x28000000 0x24000000 0x20000000 BANK0-SIZE+ BANK1- SIZE+ BANK2-SIZE BANK0-SIZE+ BANK1- SIZE BANK0-SIZE 0x00000000 CS7 CS6 CS5 CS4 SDRAM CS3 16 128MB SDRAM CS2 16 128MB SDRAM CS1 16 128MB SDRAM CS0 16 128MB
0x01f80000
Flash U-Boot Linux Flash FlashU-Boot SDRAM Linux Linux SDRAM
uclinux
Micro-Control Linux MMU real memory manage : FLAT elf2flt C uc-libc/uclibc Motorola DragonBall, and other 68K Derivatives Motorola ColdFire ARM7TDMI and MC68EN302 ETRAX Intel i960 PRISMA Atari68K Blackfin
uclinux TCP/IP data 50~100k bss 100~150k text 300k >80k
uclinux Linux uclinux
uclinux uclinux bootloader vmlinux.lds.s
LinuxGNU 4 GCC: GNU.o AS: GNU (Assembler).S.s.o LD: GNU (Linker) LDD: NM: AR: -m486 -On -shared -static -Wall 486
gcc c I. o hello1.o hello1.c gcc L. o hello hello1.o hello2.o -lcrypt bfin-uclinux-gcc -O2 -Wall -Dlinux -D linux -Dunix -D uclinux -I/BF561-R2/uClinux-dist -I/BF561-R2/uClinux-dist/lib/uClibc/include -I./ - I/BF561-R2/uClinux-dist/lib/libnet -c -o hello1.o hello1.c bfin-uclinux-gcc -Wl,-elf2flt -L/BF561-R2/uClinux-dist/lib/uClibc/. -L/BF561-R2/uClinux-dist/lib/uClibc/lib -L/BF561-R2/uClinux-dist/lib/uClibc/libm -o hello hello1.o hello2.o -lcrypt
Makefile make CC = PPPDOBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o \ auth.o options.o demand.o utils.o sys-linux.o ipxcp.o multilink.o tdb.o tty.o CFLAGS += LDFLAGS += LIBS = -lcrypt all: pppd pppd: $(PPPDOBJS) $(CC) $(LDFLAGS) -o pppd $(PPPDOBJS) $(LIBS) romfs: $(ROMFSINST) /bin/$(exec) clean: rm -f $(PPPDOBJS) pppd *~
/BF561/tools/usr/local cp -rf /BF561/tools/* /usr/local 1) bfin-elf-xxx u-boot 2) bfin-uclinux-xxx uclinux C
blackfin cvs -z9 -d:pserver:anonymous@cvs.blackfin.uclinux.org:/cvsroot/gcc3 binutils cvs -z9 -d:pserver:anonymous@cvs.blackfin.uclinux.org:/cvsroot/gcc3 elf2flt cvs -z9 -d:pserver:anonymous@cvs.blackfin.uclinux.org:/cvsroot/gcc3 gcc http://blackfin.uclinux.org/frs/?group_id=17 Binutils: make distclean./configure --target=bfin-elf --prefix=<output_dir> --exec-prefix=<output_dir> make make install cp -rf <2.6 kernel>/linux-2.6.x/include <output_dir>/bfin-elf cp -rf <2.6 kernel>/lib/libc/include <output_dir>/bfin-elf
PATH=<output_dir>/bin:$PATH GCC make disclean./configure --target-bfin-elf --prefix=<output_dir> --exec-prefix=<output_dir> make make install Elf2flt make distclean./configure --target=bfin-elf --with-libbfd=<binutils_dir>/bfd/libbfd.a --with-libiberty=<output_dir>/lib/libiberty.a --with-bfd-include-dir=<binutils_dir>/bfd --with-inutils-include-dir=<binutils_dir>/include --prefix=<ourput_dir> --exec-prefix=<output_dir> make make install
LINUX JTAG/ u-boot TFTP
Visual DSP++ U-BOOT RAM U-BOOT(u-boot.dxe) ROM U-BOOT(u-boot.bin) PCJTAG Visual DSP SDRAM EBIU_SDGCTL: 0x91998D EBIU_SDBCTL: 0x15 EBIU_SDRRC: 0x74A u-boot.dxe PC RAM U-BOOT 0x1000000 115200 8N1 U-BOOT ROM U-BOOTFLASH BOOT> loadb 1000000 BOOT>fl 20000000 1000000 20000 FLASHU-BOOT
uclinux Linux Makefile
Makefile Linux Linux config.in 2.6 Kconfig.config uclinux linux-2.6.x make menuconfig : make clean make dep( 2.4) make
char xxx_init OS ENABLE request_irq file_operation
file_operations include/linux/fs.h lseek read writeread readdir select ioctlcmd mmap open I/O release close inode /dev/xxx file register_chrdev /devfs_register
int request_irq(unsigned int irq, void (*handler)(int irq,void dev_id,struct pt_regs *regs),unsigned long flags, const char *device, void *dev_id); void free_irq(unsigned int irq, void *dev_id); void * kmalloc(unsigned int len, int priority); void kfree(void * obj); I/O check_region request_region release_region check_mem_region request_mem_region release_mem_region I/O inb inb_p outb outb_p inw outw inl outl add_timer del_timer init_timer #define cli() asm volatile ("cli"::) #define sti() asm volatile ("sti"::) printk LINUX III
ENABLE save_flags(flags); cli(); restore_flags(flags); 16 GPRS U IDEhda lost interrupt IDE softirq init_bh() /mark_bh/queue_task/run_task_queue (http://www.linuxforum.net/forum/showflat.php?cat=&board=linuxk&number=88594&page=0&view=collapsed&sb =5&o=7&part=) PENDING request_irq enable
: insmod/rmmod/lsmod gcc -D KERNEL -DMODULE Ikernelsrc_include_dir init_module insmod uclinuxosmain module_init initcall init mem.c kernel/include/linux/init.h cleanup_module module_exit
mknod /dev/xxx c major minor register_chrdev /dev/ devfs_register major + minor fd=open( /dev/xxx,...); read fd,buf,cnt ; register_chrdev(major, xxx,&fops); xxx_open xxx_read
uclinux MMU LINUX CPU < GPIO CPU> MEMORY ioremap copy_from_user(skbuf,buf,cnt)/copy_to_user(buf,skbuf,cnt) bootloader 90% MAC/IDE/SL811/PCMCIA+WLAN
KERNEL read fd,buf,cnt ; xxx_read fd,buf,cnt) interrupt_handler{// while(copied < cnt){ if(irq_evt==receive) interruptible_sleep_on(wq);} wake_up_interruptible(wq); copy_to_user(buf,skbuf,cnt); }
C uclibc uc-libc uc-libc uclinux Ccoldfile uclibc uc-libc bug uclibc libc: C libm: libcrpt: libpthread:posix libutil: Unix libz:
C uclibc uc-libc uc-libc uclinux Ccoldfile uclibc uc-libc bug uclibc libc: C libm: libcrpt: libpthread:posix libutil: Unix libz:
uclinux-dist/user uclinux-dist make menuconfig Busybox Busybox linux UNIX PC Busybox POSIX arg0
Tips Makefile
Linux linux init shell Blackfin Linux BSP ext2 ramdisk uclinux-dist/vendors/ TARGET/Makefile uclinux-dist/romfs genext2fsext2 rootfs.img
rootfs.img.ramdiskrootfs.o rootfs.o linux ld vmlinux.lds.s.data:{ }>ram ramdisk_begin =. ; *(.ramdisk) ramdisk_end =. ; ramdisk_begin ramdisk_end bfin-uclinux-objcopy --add-section.romfs=/bf561-r2/uclinux-dist/linux- 2.6.x/rootfs.img \ --adjust-section-vma.romfs=${addr} --no-adjust-warnings \ --set-section-flags.romfs=alloc,load,data \ /uclinux-dist/linux-2.6.x/linux concat.dxe
uclinux-dist make uclinuxdist/images linux.bin zimage.bin linux.bin linux zimage.bin linux.bin u-boot FLASH, zimage.dxe (ELF ) U-BOOT U-BOOT SDRAM BOOT> tftp 0x1000 linux.bin BOOT> go 1000 BOOT> tftp 0x1000 zimage.bin BOOT> fl 0x20040000 0x1000 0x100000 U-BOOT
Linux uclinux
D/A ADV7171 BF561 PPI0 BF561 GPIO I2C ADV7171 ADV7171 struct file_operations adv7171_fops = { open: adv7171_open, ioctl: adv7171_ioctl, release: adv7171_release, write: adv7171_write, }; init() adv7171 PPI DMA open(): PPIDMA write(): ioctl(): ISR(): DMA
Linux dev_base net_device Linux
EBIUDM9000 D0~D15 16 DM9000 A2 DM9000 / PF11 DM9000 CS1 DM9000
drivers/net/space.c ethif_probe dmfe_probe: dev, ethif_probe dmfe_open: ifconfigopen dmfe_stop: dmfe_start_xmit: sk_buffer dmfe_interrupt dm9000...
Inetd /etc/inetd.conf service type protocal wait user server cmdline service/etc/services Type socket Stream/Dgram Protocol Wait Dgram socket User ID Server Cmdlineargument()
uclinux make menuconfig inetd telnetd ftpd romfs/etc/inittab inet:unknown:/bin/inetd romfs/etc/inetd.conf ftp tream tcp nowait root /bin/ftpd telnet stream tcp nowait root /bin/telnetd make
telnetd: [/]# telnet 192.168.2.254 Trying 192.168.2.254... Connected to 192.168.2.254 (192.168.2.254). Escape character is ^]. Sash command shel (version 1.1.1) />ls bin dev etc home lib mnt proc root sbin tmp usr var />
1. u-boot+ram LINUX 2. u-boot 3. MODULES NFS
./hello minigui/qt/microwin GUI libxxx.socgi : ( ) LINUX PC mkdir /2410lib; gunzip ramdisk.image.gz mount o loop ramdisk.image /tmp cp f /tmp/lib/* /target-lib minicom mount o nolock 192.168.2.122:/targetlib /lib mount -o nolock 192.168.2.122:/ /mnt /mnt/treeview& mount IP PC PC UNIX
BF561 CORE A LINUX CORE B H.264@CIF CORE A CORE B CORE A CORE A
VoIP MPEG4 MP3 WMA email SMS MMS Linux H.264/MPEG4 G.711/G.723.1/G.729/MP3 TCP/IP H.323 GUI ADSP BF561(600MHz) TFT LCD(3.5 ) FLASH SDRAM CCD A/D A/D D/A
1. uclinux uclinux Application Module MP3 SoHo Gateway Communication Module RT BF533 +uclinux50us 2. GPL GPL module insmod GPL
: market@besovideo.com support@besovideo.com http://bbs.21ic.com/club/bbs/bbsview.asp?boardid=51