This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F2808启动方式的困惑

Other Parts Discussed in Thread: MAX232

如图配置GPIO18     GPIO29    GPIO34引脚电平

1、配置GPIO18     GPIO29    GPIO34这三个脚,只需在硬件上配置吧?如接3.3V,接地等构成八种boot mode。

2、假如不配置GPIO18     GPIO29    GPIO34,把它们当成正常的I/O或者正常使用时,好像不影响程序的启动啊。为什么TI官方程序说一定要配置这三个引脚的电平呢?

3、这八种boot mode到底是做什么用的?

4、假如我在电路板上,把GPIO18  引脚接地,   GPIO29接3.3V,    GPIO34接地,是不是就配置成了从SARAM启动呢?  那这三个引脚还能正常使用吗?如当做I/O口使用,或者外设SCI、SPI使用?


求老师们解答,谢谢。

  • 1、配置GPIO18     GPIO29    GPIO34这三个脚,只需在硬件上配置吧?如接3.3V,接地等构成八种boot mode。

    对,通过拉低拉高设置

    2、假如不配置GPIO18     GPIO29    GPIO34,把它们当成正常的I/O或者正常使用时,好像不影响程序的启动啊。为什么TI官方程序说一定要配置这三个引脚的电平呢?

    C2000 有段Bootloader程序用于确定启动模式,是在系统初始化程序之前的,在初始化程序中才去配置IO的功能。

    3、这八种boot mode到底是做什么用的?

    确定系统程序的来源,可以从I2C、UART中启动等等。、

    4、假如我在电路板上,把GPIO18  引脚接地,   GPIO29接3.3V,    GPIO34接地,是不是就配置成了从SARAM启动呢?  那这三个引脚还能正常使用吗?如当做I/O口使用,或者外设SCI、SPI使用?

    对!都能使用的啊。

  • 如上面三个图所示:

    GPIO18配置成TIN,作为MAX232的发送输入端;

    GPIO29配置成TXD1,作为485发送;

    GPIO34配置成点亮一个LED灯;

    这样 在系统初始化程序之前的,应该怎么样配置GPIO18     GPIO29    GPIO34来确定Boot Mode?只能软件上配置了,因为GPIO18     GPIO29    GPIO34外围硬件电路已经确定了,所以不能通过外围硬件电路来配置Boot Mode.

    谢谢了。期待中...

  • 简单来说,你现在都还不确定boot mode是什么意思,有什么作用,我想你的项目应该也不会用到。

    只要开发阶段带仿真器能运行,最终烧写到flash上,脱机能跑就ok,那么你就可以不考虑这个问题。

    同时,这三个GPIO都是默认使能了内部上拉的,而你的电路里看上去也是将它们上拉到了高电平,则没有什么影响,因为还是在flash启动。

    如果你一定要使用其它模式 -- 尽管我相信目前你99%是用不到的,那么你就必须更改电路来改变GPIO的电平以符合对应的启动模式的电平组合了,最好的方式是这几个引脚不用来作现在的功能,当然,如果要维持,那么分别加三个跳线也是可以的,启动时跳到你需要的电平组合,正常运行后再将跳线切回到现在的模式。

    建议再仔细阅读一下boot rom user guide.

  • Haypin,

    首先确认一点,bootloader是芯片上电后跳到出厂ROM区域执行的一段代码,它根据那三个GPIO引脚的电平,来判断去哪里执行用户程序,也就是去哪里拿第一条指令,执行用户的代码。

    如果这三个引脚你不做任何配置,默认是上电时上拉使能,所以引导模式是boot to flash, 也就是到0x3F 7FF6 取第一条指令,这里会有一条跳转指令,跳转_c_int00进行C环境初始化,然后才跳转到main函数,也就是你自己的程序。所以可以确认,单机跑模式(不在CCS仿真),不可能用软件配置引导模式。

    所以你需要测试一下,上电后,这三个引脚的电平是否都为高电平,如果是,那就是引导到flash中执行,就可以了。可以在这三个引脚中加上拉电阻给个高电平。

    Eric

  • 我目前还没有看这个资料boot rom user guide.

    所以我现在不用管这个boot mode.

    谢谢啦。茅塞顿开.

  • 嗯,谢谢 Eric。我试一下。

  • 还弱弱问一下,对这个boot mode不了解.

    从SRAM boot 和从Flash boot 和程序烧写在RAM 和Flash里面是同一个概念吗?

      如仿真要把程序烧写在RAM里面,要是要脱机运行,就烧写在Flash 里面.

  • 不是同个概念,但是有联系。

    如果在仿真的时候,程序是下载到RAM中,那就要选择boot to RAM, 如果程序烧到FLASH中,那就要选择boot to flash。

    只要记得,引导模式,是告诉芯片去哪里找到你的用户程序。

  • 上面有位老师说:“只要开发阶段带仿真器能运行,最终烧写到flash上,脱机能跑就ok,那么你就可以不考虑这个问题”

    就是不管烧写到RAM还是Flash,都不要考虑BOOT MODE.

    按照您这么说,还是要管BOOT mode啊. 因为那三个引脚都使用了,不能配置 啊.

  • 在仿真的时候,CCS 在load程序后会自动跳过bootloader引导这个阶段,自动地找到main函数的入口,这是CCS带来的附加功能。还有在仿真调试时,我们常用的操作时reset cpu > restart,这样在CCS的帮助下,自动跳到main的第一条语句。但这并不代码就说不用考虑boot mode,你在调试的过程中复位CPU,假如你不用restart指令,如果boot mode错误,你点击run,程序一定不能跑。 这也是为什么三个引脚都是高电平,boot to flash模式,却能够在CCS仿真时,程序能够load在RAM的原因。

    那么单机跑的时候,也是一定要确保三个引脚都为高电平的,不然也是不能找到你的用户程序的。你可以随便把一个引脚拉低,弄个闪灯程序,也一定跑不起来。

    所以,不要说不去考虑。无论你在CCS仿真,还是单机跑,你应该都确保芯片在正确的引导模式。比如你程序是load在RAM的,那你就boot to RAM, 然后芯片会再0x000000取第一条指令,如果你是load flash的,那么芯片会在0x3F 7FF6取第一条指令。这是绝对正确的。你可以查看RAM和Flash的cmd文件,都可以检查到在相对应的入口地址都会放一条code_start跳转指令,这个指令占两个单元,跳转到_c_int00,执行完后跑到main.

     Eric