ROVIDE (__ram_shell_cmd_tab_begin = ABSOLUTE(.));*(.shell_cmd_tab .shell_cmd_tab.*)PROVIDE (__ram_shell_cmd_tab_end = ABSOLUTE(.))
ROVIDE (__ram_shell_cmd_tab_auto_begin = ABSOLUTE(.));*(.shell_cmd_tab_auto .shell_cmd_tab_auto.*)PROVIDE (__ram_shell_cmd_tab_auto_end = ABSOLUTE(.));*(.shell .shell.*). = ALIGN(32 / 8)
ROVIDE (__ram_shell_end = ABSOLUTE(.));} > ddr_sdram3 动态函数表创建由工具自动根据系统中的全局函数创建的命令被称为自动命令。自动命令使用户可以在命令行中调用任意普通函数,即使开发人员没有声明这些函数为命令。自动命令也需要一个数组包含系统中所有全局函数的信息,这个表为动态函数表。使用一个脚本根据系统的可执行文件自动生成动态函数表。要先编译软件,生成可执行文件;再调用脚本创建动态函数表;最后再编译出包含动态函数表的可执行文件。在脚本中先使用GNU的nm工具从可执行文件导出所有全局符号,再使用grep提取出包括函数名的行,接着使用cut删除函数名前的地址信息,使用sed将字符T替换为创建命令的宏SHELL_CMD_DECL_AUTO,并在行尾添加括号。最后将所有这些信息写入一个C源代码文件,交给编译器编译,就能得到一个动态函数表。4 自动命令参数个数为了便于开发人员使用,自动命令最好能适应所有函数类型,假设都是unsigned int的函数类型。对于可以成功转化为unsigned int类型整数的参数,将真实的值传递给函数;对于其他参数,则将参数作为一个字符串传递给函数。5 字符输入命令行从标准输入设备中获取字符。命令行只接受可打印的字符和特定的控制字符。如果收到了回车或者换行字符,代表用户完成了命令输入,就解析命令。解析命令前,去掉多余的空格符(0x20),即不允许有连续的两个或多个空格符存在,命令的最后也不能有空格符。| 欢迎光临 DIY编程器网 (http://diybcq.com/) | Powered by Discuz! X3.2 |