快乐虾
http://blog.csdn.net/lights_joy/
lights@hb165.com
本文适用于
ADSP-BF561
优视BF561EVB开发板
uclinux-2008r1.5-rc3(smp patch)
Visual DSP++ 5.0(update 5)
欢迎转载,但请保留作者信息
讨论链接:http://www.bfin-tools.org/bbs/viewthread.php?tid=25&extra=
内核启动时有一个错误:
No usable address families found.
socket: Function not implemented
Unable to create socket
Unable to create socket
因为是网络相关,想当然地在sys_socket这个系统调用上中断下来,居然没有进入这个函数执行!进一步直接在system_call断下来,很明显已经指定了sys_socket这个系统调用的序号,但是跟踪进去居然跑到sys_ni_syscall函数执行了,摆明了是链接了一个错误的函数进来了。
查sys_socket,有这样的结果:
查找全部"sys_socket", 大小写匹配, 全字匹配, 子文件夹, 查找结果1, "整个解决方案", "*.*"
F:\embed\uClinux\uClinux-dist-2008R1.5-RC3\linux-2.6.x\include\linux\net.h(29):#define SYS_SOCKET 1 /* sys_socket(2) */
F:\embed\uClinux\uClinux-dist-2008R1.5-RC3\linux-2.6.x\include\linux\syscalls.h(421):asmlinkage long sys_socket(int, int, int);
F:\embed\uClinux\uClinux-dist-2008R1.5-RC3\linux-2.6.x\kernel\sys_ni.c(37):cond_syscall(sys_socket);
F:\embed\uClinux\uClinux-dist-2008R1.5-RC3\linux-2.6.x\net\socket.c(1199):asmlinkage long sys_socket(int family, int type, int protocol)
F:\embed\uClinux\uClinux-dist-2008R1.5-RC3\linux-2.6.x\net\socket.c(2025): err = sys_socket(a0, a1, a[2]);
可疑的地方在这里
cond_syscall(sys_socket);
查cond_syscall的定义:
/*
* "Conditional" syscalls
*
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
* but it doesn't work on all toolchains, so we just do it by hand
*/
#define cond_syscall(x) asm(".weak\t_" #x "\n\t.set\t_" #x ",_sys_ni_syscall");
这段代码展开就变成了下面的一段汇编代码:
.weak _sys_socket
.set _sys_socket,_sys_ni_syscall
先在VDSP文档中查一下.weak:
The .WEAK directive supports weak binding for a symbol. Use this directive where the symbol is defined (replacing the .GLOBAL directive to make a weak definition) and the .EXTERN directive (to make a weak reference).
Syntax:
.WEAK symbol;
where:
symbol – the user-defined symbol
Although the linker generates an error if two objects define global symbols with identical names, it allows any number of instances of weak definitions of a name. All will resolve to the first, or to a single, global definition of a symbol.
One difference between .EXTERN and .WEAK references is that the linker does not extract objects from archives to satisfy weak references. Such references, left unresolved, have the value 0.
Note: The .WEAK (or .GLOBAL scope) directive is required to make symbols available for placement through RESOLVE commands in the .ldf file.
再查一下.set
The .SET directive is used to alias one symbol for another.
Syntax:
.SET symbol1, symbol2
where:
symbol1 becomes an alias to symbol2.
Example
.SET symbol1, symbol1
就这样,好好的sys_socket调用就变成了sys_ni_syscall。
把cond_syscall这几行语句注释掉,搞定。
uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(72):中断时SP的保存(2009-2-22)
uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(73):.init.setup(2009-02-27)
uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(74):initramfs(2009-02-27)
uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(75):Milestone:内核成功启动(2009-02-27)
uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(76):DM9000网卡驱动(2009-3-1)
分享到:
相关推荐
这份文档记录了在vdsp5下移植bfin-uclinux-2008r1-rc8内核的过程。 适用于ADSP-BF561。
uClinux-dist-20080808-20090112.patch uClinux的补丁
这是将uclinux-2.6 for bf561的内核移植到Visual DSP 4.5下的工程文件。由于csdn空间限制,删除了Documentation及doj,dlb等中间文件或者无关的内容,请先在http://blackfin.uclinux.org/下载2.6.19.3-ADI-2007R1.1-...
uClinux-dist-20070130-nios2-02.diff.gz
本工程用于将bfin-uclinux-2008r1-rc8内核移植到vdsp5下编译。适用于ADSP-BF561。使用了优视科技BV561EVB开发板,但仅实现其DM9000的网卡驱动。 由于CSDN空间限制,请分开下载所有的8个rar文件。 也可在...
本工程用于将bfin-uclinux-2008r1-rc8内核移植到vdsp5下编译。适用于ADSP-BF561。使用了优视科技BV561EVB开发板,但仅实现其DM9000的网卡驱动。 由于CSDN空间限制,请分开下载所有的8个rar文件。 也可在...
本工程用于将bfin-uclinux-2008r1-rc8内核移植到vdsp5下编译。适用于ADSP-BF561。使用了优视科技BV561EVB开发板,但仅实现其DM9000的网卡驱动。 由于CSDN空间限制,请分开下载所有的8个rar文件。 也可在...
本工程用于将bfin-uclinux-2008r1-rc8内核移植到vdsp5下编译。适用于ADSP-BF561。使用了优视科技BV561EVB开发板,但仅实现其DM9000的网卡驱动。 由于CSDN空间限制,请分开下载所有的8个rar文件。 也可在...
本工程用于将bfin-uclinux-2008r1-rc8内核移植到vdsp5下编译。适用于ADSP-BF561。使用了优视科技BV561EVB开发板,但仅实现其DM9000的网卡驱动。 由于CSDN空间限制,请分开下载所有的8个rar文件。 也可在...
本工程用于将bfin-uclinux-2008r1-rc8内核移植到vdsp5下编译。适用于ADSP-BF561。使用了优视科技BV561EVB开发板,但仅实现其DM9000的网卡驱动。 由于CSDN空间限制,请分开下载所有的8个rar文件。 也可在...
本工程用于将bfin-uclinux-2008r1-rc8内核移植到vdsp5下编译。适用于ADSP-BF561。使用了优视科技BV561EVB开发板,但仅实现其DM9000的网卡驱动。 由于CSDN空间限制,请分开下载所有的8个rar文件。 也可在...
本工程用于将bfin-uclinux-2008r1-rc8内核移植到vdsp5下编译。适用于ADSP-BF561。使用了优视科技BV561EVB开发板,但仅实现其DM9000的网卡驱动。 由于CSDN空间限制,请分开下载所有的8个rar文件。 也可在...
uClinux-dist-20160919.tar.bz2
uClinux,LPC2200,patch
uClinux-2.4.22-uc0.diff.bz2
编译工具 or32-uclinux.rar编译工具 or32-uclinux.rar编译工具 or32-uclinux.rar
为SmartARM2200 开发板和LPC2200 芯片打补丁,将uClinux-dist-20040408-lpc-chy-cmj.patch 拷贝到当前目录下,并执行: cat uClinux-dist-20040408-lpc-chy-cmj.patch | patch –p1 –d uClinux-dist
该压缩包推荐在Ubuntu环境下下载使用,用于在Ubuntu环境下开发嵌入式操作系统,资源区还有一系列与其配套使用的工具可以下载
实时嵌入式操作系统!!
the source code is charactic of simple and efficent,which run on my site,and put a light on your intelgence relation to core .