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.

6678 用 hex6x 生成 boottable 格式的 bin 文件,改变大小端时改不了?



6678 用 hex6x 生成 boottable 格式的 bin 文件,已经成功生成。

6678 默认生成为小端模式,但是自带的 RBL 又必须要求输入大端模式,所以现在想改为直接生成大端模式。

Assembly User Guide 里面说用 -order M,并且要在 -memwidth 32 下才可以,还有不能用 -load image 模式。

我现在所有要求都符合,但生成的出来的 bin 文件和原来小端模式生成的 bin 文件没有区别。

请问专家们,为什么呢?

  • 用Byteswapccs.c试试看。这个帖子里有下载链接和操作说明。
    e2e.ti.com/.../396790
  • 我要的不是「先生成文件,再手动转换大小端」。

    你那个帖子,本论坛就有中文版,还是置顶帖里的,如下,何必给我发一个英文官网的帖子。

    https://e2echina.ti.com/question_answer/dsp_arm/c6000_multicore/f/53/t/100597?tisearch=e2e-quicksearch&keymatch=spi%20nor

    这个帖子本质上,就是「先生成文件,再手动转换大小端」。

    如果是「先生成文件,再手动转换大小端」,我知道至少 3 种方法:

    1. 通过 CCS 里的 load memory ,读取文件,勾选里面有一个 SWAP 选项,再 save memory 保存到新文件;

    2. 自己写一个转换大小端的程序,其实就是上面第一种方法的程序化;

    3. 网上各种工具,包括你说的 Byteswapccs.exe ;

    但是,我希望「生成文件的同时,大小端也能同时设置好」。

    我的重点是  -order M 这个选项到底能不能用,还是说这只是一个摆设?能用的话怎么用,我用的方法有哪里不对?

    请各位专家解答。

  • 最终解决了,一言难尽。

    TI的文档有很多错,比如 -order M/L 并不是真正的转换为大/小端,只是和你工程的大小端设置进行对比,不一致就换一下。

    比如,6678 的 datawidth = 32, 在 memwidth = 32,romwidth = 32 的情况下,即便你的工程是小端,生成出来的文件也是大端(因为datawidth32 -> memwidth32 过程中,没有高低位,也就没有大小端区别;如果是 datawidth32 -> memwidth16,就有大小端区别,生成出来的文件就是16位小端),

    这时候你再使用 -order M,它才不管你是不是已经是大端了,它就看工程是小端,和-order M 一对比,不一致,就给你转换字节顺序,最终生成出来的居然就是小端了。

    再比如,文档说,只有 memwidth = 32 时, -order M/L 才有用。这是错的,memwidth = 16 时也能用。
    再比如,文档说, memwidth = xx,只要 ROMS directive 不覆盖设置,就有全局作用。实际使用时,没有。

    还有好多其他错误,真的是大坑。感觉文档很久没有真正更新修订了,最多只是COPY一下,更新下日期。

    妈的。