wxMidnight 发表于 2005-9-4 22:56:41

lumit 4510有人用gcc来编译么?

打算近期提供finsh的第一个版本,如果用gcc,可以自动把核心文件的符号表导出加载到finsh中去,这样就可以在finsh中调用系统中的任何函数了

谁愿意帮试试?(我手头没lumit板子)

limingth 发表于 2005-9-5 09:58:04

我对 finsh 还不是很熟悉,能否详细介绍一下它的功能和用途?lumit4510 bootloader 目前可以支持二进制可执行映像文件的下载和自动执行,如果 finsh 可以 objcopy 出一个 bin 文件那就可以加载到 lumit4510 的板子上。

wxMidnight 发表于 2005-9-5 10:44:35

finsh是这样的,它是一个shell系统,在这个shell下可以执行一些函数,可以自动把一些参数传递到函数中(仅限于char,short,int/long,指针)

例如系统中有这么一个函数:show_task(int tid)
那么直接在finsh中输入
finsh>>show_task(0)
将调用这个函数,参数是0(假设是显示某个任务的详细信息)

又例如对于通常意义的函数
finsh>>void* ptr;
finsh>>ptr = fopen("test.txt", "r");
finsh>>void* buffer;
finsh>>buffer = malloc(256);
finsh>>fread(buffer, 128, 2, ptr);
finsh>>...
(所有的这些都可以在shell命令行上交互,什么东西不行?结构体不支持)

符号表的自动导入是,把内核映像文件中的全部或部分符号导入到finsh中去,使得在shell下能够直接访问这些函数、变量

其他类似的有RTEMS的C-Expression,vxWorks的Shell系统等

limingth 发表于 2005-9-5 11:54:29

finsh 的移植需要开发板提供哪些支持?这个 shell 是可以用于板子的在线编程,比如点灯,类似于 basic 的命令解释执行,对么?

wxMidnight 发表于 2005-9-5 13:15:57

不需要什么支持,不需要动态分配内存,不需要OS支持
只需要:
strncpy,memset,strncmp

获取输入/输出需要手动挂接(即自己把从串口输入、输出挂上去)

可以用于动态的改变一些东西,例如点灯,修改/查看寄存器 etc
但运行的这些命令无法保存,也不支持从板子中读取一个文件做为脚本运行(全功能的FinC太大,这个是精简版的Finsh,保持在32k以下(不包括系统符号表))

limingth 发表于 2005-9-5 16:34:25

那应该没问题,这几个条件都很容易满足,你可以先尝试一下移植到 uclinux 里面做为一个应用程序,然后通过 skyeye 调试,如果都没问题就可以移植到 lumit4510 上了。
页: [1]
查看完整版本: lumit 4510有人用gcc来编译么?