快乐虾
http://blog.csdn.net/lights_joy/
本文适用于
ADSP-BF561
Visual DSP++ 5.0(update 6)
Bfin-uclinux-2009r1.6
欢迎转载,但请保留作者信息
在之前的方案中,我们需要知道几个地址,而且这几个地址在修改内核之后必须手工更改。现在我们改进这种方案,避免这种情况。
我们知道内核要管理所有的系统资源,但是有一个地方是个例外,那就是从FIX_CODE之后到内核代码段开始之前的这段空间,当内核启动时,只是简单地将这段空间的内容清0。而FIX_CODE在默认情况下将占用0x400到0x490这段空间,因此只要我们将内核代码段往后移,这就可以留一段空间给vdsp使用。
在之前的方案中,我们还需要知道symtab这个段的起始地址和结束地址,因而也导致了每次修改内核选项后必须重新修改这两个地址,现在我们向FIX_CODE学习,将之复制到一个固定位置,比如FIX_CODE之后。因为内核符号表不大,我们只要少量空间就可以了。
在之前的方案中,设想用objdump获取每个段的内容再链接到内核中,实际上只要把整个DXE文件链接到内核中,由内核启动时读取这个DXE文件的内容并放到适当的位置上就可以了,不需要手工进行操作。
之前我们直接让内核检测固定位置的数据是否有变化,以此决定是否需要调用初始化函数,现在我们将之通过内核参数实现,只要在内核启动时传入一个或者多个需要监测的地址即可。
我们要在vdsp下开发uclinux应用程序,因而uclibc的移植就是必须的,幸运的是在vdsp下移植uclibc并不需要太大的改动:
1、 需要从vdsp的include目录下复制几个文件:stdarg.h,stddef.h,float.h,stdbool.h,limits.h和yvals.h。
2、 需要自己建立uclibc_config.h的头文件,在此文件中定义一些宏对uclibc进行配置。
3、 修改syscall宏定义。
同样,我们让内核检测固定位置的空间,当检测到数据变化时,我们再调用一个stub应用程序,让这个用户程序跳转到指定的位置执行。
同样,在开发完成后,我们直接将这个dxe文件包含在stub程序中,由这个程序读取dxe文件的内容并复制到正确的位置(类似于corebld),再跳转到此位置执行。
近日,我家6岁的小姑娘参加了第六届POP全国少儿英语风采大赛,拉票进行中(2011-6-15前)。
请帮忙点击新东方网站的链接:
http://popdasai.xdf.cn/toupiao.php?do=space&uid=4237
投她一票,谢谢!
让vdsp与uclinux共舞(10):加载SMP内核(2009-11-4)
让vdsp与uclinux共舞(9):查找内核函数(2009-11-3)
让vdsp与uclinux共舞(8):vdsp驱动框架(2009-11-3)
让vdsp与uclinux共舞(7):在内核为驱动预留空间(2009-11-2)
让vdsp与uclinux共舞(6):用vdsp开发驱动的设想(2009-11-2)
让vdsp与uclinux共舞(5):加入dwarf调试信息(2009-11-2)
让vdsp与uclinux共舞(4):加载uclinux(2009-11-2)
让vdsp与uclinux共舞(3):boot kernel(2009-10-31)
让vdsp与uclinux共舞(2):vdsp的影响(2009-10-31)
让VDSP与uclinux共舞(1):开篇(2009-10-30)
关于uClinux-2.6(bf561) for VDSP的移植(2008/3/11)