嵌入式开发者社区

标题: 一个工程怎么样boot 起来 app工程,怎么样调用? [打印本页]

作者: 新手上路    时间: 2016-1-5 18:19
标题: 一个工程怎么样boot 起来 app工程,怎么样调用?
app.out用AISgen生成 .ais,然后烧录到NANDFLASH中。我是不是把NANDFLASH,烧录的.bin,数据读出来 ,然后存到DSP的RAM缓存中(比如)0x1181 0000地址中,然后想调APP函数 时是不是   运行这个 appEntry = (void (*)(void)) 0x1181 0000; 就能 运行起来APP工程。这样做可行吗?
我用的是StarterWare中的 bootloader例程



作者: 希望缄默    时间: 2016-1-6 09:05
按段加载就可以
作者: 新手上路    时间: 2016-1-6 09:08
希望缄默 发表于 2016-1-6 09:05
按段加载就可以

怎么按段加载?能详细说一下吗? 我直接运行运行这个 appEntry = (void (*)(void)) 0x1181 0000,能调用app函数吗?
作者: 希望缄默    时间: 2016-1-6 17:20
新手上路 发表于 2016-1-6 09:08
怎么按段加载?能详细说一下吗? 我直接运行运行这个 appEntry = (void (*)(void)) 0x1181 0000,能调用a ...

如果地址是函数的入口地址 就能调用函数的
作者: 新手上路    时间: 2016-1-7 08:56
希望缄默 发表于 2016-1-6 17:20
如果地址是函数的入口地址 就能调用函数的

一:ais文件中解析出的段加载头如下,
0x58535901,
0x11800020,
0x000095E0,
........
我是不是把这些,直接写到,0x1181 0000地址中,然后运行运行这个 appEntry = (void (*)(void)) 0x1181 0000; 就能调用上面的段?
二:用nandwrit烧录到nandflash中时有一个 参数entryPoint  = 0x11800000;,这个参数地址是函数入口吗?或者我在程序中怎么找到函数入口?
麻烦给小弟 指教指教,谢谢您啦!
作者: 希望缄默    时间: 2016-1-7 09:09
新手上路 发表于 2016-1-7 08:56
一:ais文件中解析出的段加载头如下,
0x58535901,
0x11800020,

AIS 是脚本 需要 RBL 才能解析

nandwrite 指定的参数应当是 C语言入口 _c_int00 的地址
作者: 新手上路    时间: 2016-1-7 09:31
希望缄默 发表于 2016-1-7 09:09
AIS 是脚本 需要 RBL 才能解析

nandwrite 指定的参数应当是 C语言入口 _c_int00 的地址 ...


希望缄默 发表于 2016-1-6 17:20
如果地址是函数的入口地址 就能调用函数的

一:ais文件中解析出的段加载头如下,
0x58535901,
0x11800020,
0x000095E0,
........
这个是我从nandflash中读出的数据,
还有我是用stareware  中的bootloader例程做的,
我从nandflash中,读出的数据 ,我把这些数据 写到 0x1181 0000地址中,然后运行运行这个 appEntry = (void (*)(void)) 0x1181 0000; 这样可行吗?
0x41504954,
0x5853590D,
0x00050005,
0x00000000,
0x3FFFFFFC,
0x00000000,
0x00000000,
0x00000002,
0x58535901,
0x11800000,
0x00000020,
0x00123C12,
作者: 希望缄默    时间: 2016-1-7 17:06
新手上路 发表于 2016-1-7 09:31
希望缄默 发表于 2016-1-6 17:20
如果地址是函数的入口地址 就能调用函数的

如果 0x11810000 是一个函数入口地址 就可以
作者: 希望缄默    时间: 2016-1-7 17:07
新手上路 发表于 2016-1-7 09:31
希望缄默 发表于 2016-1-6 17:20
如果地址是函数的入口地址 就能调用函数的

你到底要实现什么功能?
作者: 新手上路    时间: 2016-1-8 13:38
希望缄默 发表于 2016-1-7 17:07
你到底要实现什么功能?

两个.AIS文件通过nandwrit烧写到 nandflash中,一个是主工程A.ais,另一个是app.ais。  主工程 通过这个 appEntry = (void (*)(void)) 0x1181 0000;  调用app工程,执行完之后,然后再跳转到主工程A。

这样的目的是 ,可以在不动主工程的情况下,随时更改app工程。

怎么确定函数入口地址呢?
作者: 希望缄默    时间: 2016-1-8 16:50
新手上路 发表于 2016-1-8 13:38
两个.AIS文件通过nandwrit烧写到 nandflash中,一个是主工程A.ais,另一个是app.ais。  主工程 通过这个  ...

使用预编译指令可以固定地址(#pragma CODE_SECTION)
也可以查看 .map 文件得到
作者: 新手上路    时间: 2016-1-11 09:46
希望缄默 发表于 2016-1-8 16:50
使用预编译指令可以固定地址(#pragma CODE_SECTION)
也可以查看 .map 文件得到 ...

先前问的问题 有点含糊,刚又看了一遍,贵公司的教学视频《启动与烧写篇》,其实我要实现的是,手动写bootloader加载程序,下面是ais部分数据,例如其中的一个段0x58535901为头,0x00000020为长度,是不是我把接下的0x00000020个数据 按顺序写到0x11800000,中,就可以?但是关于这个0x5853590D,开头的我把它放到什么内存位置我不太清楚.
0x41504954,
0x5853590D,
0x00050005,
0x00000000,
0x3FFFFFFC,
0x00000000,
0x00000000,
0x00000002,
0x58535901,
0x11800000,
0x00000020,
0x00123C12,
衷心感谢创龙工程师们!
作者: 希望缄默    时间: 2016-1-11 20:03
新手上路 发表于 2016-1-11 09:46
先前问的问题 有点含糊,刚又看了一遍,贵公司的教学视频《启动与烧写篇》,其实我要实现的是,手动写boo ...

前面的是 AIS 脚本命令 不是 DSP 程序段 不能执行
只能由 RBL 解析




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4