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.
I am working with Codec Engine image1_copy example with EZSDK 5 05 01 04, evm8168. I have encountered the backtrace and ioremap error when running the example.
Your driver calls ioremap() on system memory. This leadsto architecturally unpredictable behaviour on ARMv6+, and ioremap()will fail in the next kernel release. Please fix your driver.
I have done the following:
Rebuild the syslink driver, insert it into the kernel with this script:
CMEM_MODPARAMS="phys_start=0xa0000000 phys_end=0xa07fffff pools=8x614400"
if [ -e syslink.ko ] then modprobe syslink TRACE=0 TRACEFAILURE=1 TRACEENTER=1fi
if [ -e /dev/syslinkipc ] then for dev in `ls /dev/syslinkipc`; do chmod 666 /dev/syslinkipc/$dev donefi
if [ -e cmemk.ko ] then modprobe cmemk $CMEM_MODPARAMSfi
Also reduced Linux memory to different sizes MEM=169M, 168M, 128M.
Is there something else I am missing? I would like to know if cmem bootargs can affect syslink driver at runtime, also if there are other Linux Kernel bootargs considerations a may be not got into account, if they are how can i set them. Regards
- Jose L.
Getting an ioremap() on system memory error likely indicates that a section of your DSP memory is overlapping with the memory assigned to Linux kernel.
In your linux kernel bootargs, check and see the memory given to the Linux kernel via one or more 'mem= ...' arguments, for example:
(the latter just will assume start address=0x80000000) will give Linux kernel 256MB starting at 0x80000000. You want to make sure that the memory assigned to the DSP is not included in the range of memory assigned to Linux. You can create holes to assign to DSP or other non-linux users of memory by having multiple 'mem=' arguments. For example,
will give Linux 256MB of memory [0x8000 0000-0x8FFF FFFF] leave an unassigned 2MB hole @0x90000000, which for example can be memory assigned to the DSP, and then the second mem argument will give Linux the 254MB memory starting at 0x9020 0000.
Hope this helps,
Can you change this environment variable so that Linux memory will not overlap with the DSP memory?
In reply to raormanrat:
Hi Murat, thanks for your fast reply.
Maybe I am asuming too much about my board memory configuration, as if it is using the exact memory map for the EZSDK.
Happens that when I used the genserver wizard I set the memory configuration as default, like this one:
DDR3 0x01800000 24MB
DDRALGHEAP 0x00800000 8MB.
The example works, so the error is more like a warning in case of misbehavior.
As a fresh start i will review EZSDK memory map, have it in mind when i set the DSP server memory configuration and the Linux Kernel partition size, if I am understanding you the "@" character defines the exact physical address where this partition will be.
But first i'll just set mem=256M@0x80000000 to see what happens
In reply to Jose Lopez1:
I have made what you suggested, through bootargs I assigned 2 splitted Linux Memory blocks. mem=168M@0x80000000 mem=128M@0x8c800000 to have a 20MB memory hole for the DSP, now the syslink driver doesnt complain. Thank you for your help.
That's great Jose,
Thanks for confirming that the suggestion fixed the issue.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.