英飞凌芯片使用记录:程序运行放在RAM,规避ECC错误,操作Flash注意点

news2024/9/27 19:22:09

目录

1、程序放在RAM运行的方法(Tasking)

2、Tc3xx读取PF的时候关闭ECC错误方法

3、看门狗驱动放置在RAM避免总线错误。

4、Debug RAM与Debug Flash的区别

5、Tasking生成的HEX不是按照PFLASH的页大小作为start,或者存在多个程序块需要合并的方式。

6、Tasking的对其方式


1、程序放在RAM运行的方法(Tasking)

        在程序里面调用PF驱动的时候,假设程序放置在PF0,那么可以操作PF1,放置在PF1可以操作PF0,也可以放置在RAM,这样PF0与PF1均可以操作了。

        通过Tasking将代码放置在RAM的方式,注意点,RAM分为PSRAM与DSRAM,运行的程序需要放置在PSRAM里面。玩玩不可以放在DSPR里面的,一旦放置在了DSPR里面,那么就无法执行了。

        1、链接文件

    memory psram0 // Program Scratch Pad Ram
    {
        mau = 8;
        size = 64k;
        type = ram;
        map (dest=bus:tc0:fpi_bus, dest_offset=0xc0000000, size=64k, priority=8);
        map (dest=bus:sri, dest_offset=0x70100000, size=64k);
    }
    /* PSRAM Code selections*/
    section_layout :vtc:linear
    {
        /*Code Sections, selectable with patterns and user defined sections*/
        group
        {
            /*Program Scratchpad Sections*/
            group
            {
                group code_psram0 (ordered, attributes=rwx, copy, run_addr=mem:psram0)
                {
                    select "(.text.cpu0_psram|.text.cpu0_psram.*)";
                    select "(.text.psram_text_cpu0|.text.psram_text_cpu0.*)";
                }
                group code_psram1 (ordered, attributes=rwx, copy, run_addr=mem:psram1)
                {
                    select "(.text.cpu1_psram|.text.cpu1_psram.*)";
                    select "(.text.psram_text_cpu1|.text.psram_text_cpu1.*)";
                }
                group code_psram2 (ordered, attributes=rwx, copy, run_addr=mem:psram2)
                {
                    select "(.text.cpu2_psram|.text.cpu2_psram.*)";
                    select "(.text.psram_text_cpu2|.text.psram_text_cpu2.*)";
                }
            }
        }
    }

2、代码部分执行

#pragma section code "psram_text_cpu0"
void Function(void);
#pragma section code restore

这样就可以将对应函数放置在RAM  PSPR区域内了。

     2、Tc3xx读取PF的时候关闭ECC错误方法

          当然,这样子还不行,这样子读取PF会报ECC错误的,这个时候就要关闭ECC错误,主要的寄存器如下。

关闭ECC的代码如下

    uint16 cpuWdtPsw = Ifx_Ssw_getCpuWatchdogPassword(&MODULE_SCU.WDTCPU[0]);
    uint16 safetyWdtPsw = Ifx_Ssw_getSafetyWatchdogPassword();
    Ifx_Ssw_clearCpuEndinit(&MODULE_SCU.WDTCPU[0], cpuWdtPsw);// clears the endinit protection
    MODULE_CPU0.FLASHCON1.U = 0x00010000;
    Ifx_Ssw_setCpuEndinit(&MODULE_SCU.WDTCPU[0], cpuWdtPsw);// sets the endinit protection back on
	Ifx_Ssw_disableSafetyWatchdog(safetyWdtPsw);

开启ECC的代码如下

    uint16 cpuWdtPsw = Ifx_Ssw_getCpuWatchdogPassword(&MODULE_SCU.WDTCPU[0]);
    uint16 safetyWdtPsw = Ifx_Ssw_getSafetyWatchdogPassword();
    Ifx_Ssw_clearCpuEndinit(&MODULE_SCU.WDTCPU[0], cpuWdtPsw);// clears the endinit protection
    MODULE_CPU0.FLASHCON1.U = 0x02020000;
    Ifx_Ssw_setCpuEndinit(&MODULE_SCU.WDTCPU[0], cpuWdtPsw);// sets the endinit protection back on
	Ifx_Ssw_disableSafetyWatchdog(safetyWdtPsw);

3、看门狗驱动放置在RAM避免总线错误。

        在调试PF擦除的时候,发现利用tc3xx本身的WDG模块调试,一旦调用写入或者擦除函数,就会进异常,感觉很奇怪,后来,通过屏蔽代码的方式查看错误源,一旦不使能看门狗就能正常,想着将WDG放置在PSPR RAM尝试下,可以实现功效。所以,部分时候当出现总线错误的时候,不妨将代码放置在PSPR RAM尝试一下。

4、Debug RAM与Debug Flash的区别

− Debug RAM
链接所有的应用程序到RAM存储器,下载代码到RAM存储器。这可以加快代码的运行速度。

− Debug Flash
普通内置闪存,没有一些优化和其他调试选项。该配置用于调试项目。

        通过选择根文件夹更改目标配置,然后右键单击,单击Build Configurations >> Set
Active >> <your_build_config>

        要构建项目,请选择您的文件夹并单击工具栏中的构建图标。(您可以选择哪个目标编译)

5、Tasking生成的HEX不是按照PFLASH的页大小作为start,或者存在多个程序块需要合并的方式。

合并后如下

        还有一种情况是,例如Block 1的Start at 0x8006B821,不能被32整除,那么烧录时候,flash无法正常烧录,为了规避这种情况,只需要在Tasking编译器里面设置如下操作即可。

--concatenate-sections

6、Tasking的对其方式

        部分时候,假设ASW与BSW通过不同的编译器实现,例如OEM特有的CodeSys,会遇到一个问题,字节对齐问题,在Tasking里面uint16与uint32分别占用2与4字节,假设结构体里面CodeSys认为uint16的数据也是4字节对齐,占用4个字节,但是TASKING对uint16只占用2字节,当代码集成在一起的时候,举个例子吧

codesys                                                        tasking

uint16  a ;     0x0000                                  uint16  a ;     0x0000     

uint32  b;      0x 0004                                 uint32  b ;     0x0002     

此时b的地址信息是冲突的,对codesys来说,导致a的值是错误的,b的值也是错误的。

通过tasking属性更改可以解决此问题。

--eabi=-half-word-align

half前面可以是-表示半字,+表示双字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1310062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第3次实验:802.11

第3次实验&#xff1a;802.11 目的&#xff1a; 探索802.11的物理层、链接层和管理功能。它被广泛用于将移动设备无线连接到互联网&#xff0c;并在课文的第4.4节中涉及。首先回顾该部分 环境&#xff1a; WireShark 实验报告正文 实验过程 本实验直接使用作者实验结果进行分析…

LeetCode刷题--- 二叉搜索树中第K小的元素

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 【 http://t.csdnimg.cn/yUl2I 】【C】 【 http://t.csdnimg.cn/6AbpV 】数据结构与算法 【 http://t.csdnimg.cn/hKh2l 】 前言&#…

Java版本+鸿鹄企业电子招投标系统源代码+支持二开+Spring cloud +鸿鹄电子招投标系统

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。为了符合国家电子招投标法律法规及相关规范&#xff0c;…

北京陪诊系统|陪诊软件开发定制|陪诊系统开发核心功能

陪诊小程序源码是一款针对医院陪护和陪诊服务的综合性解决方案&#xff0c;旨在为患者提供方便、高效且的陪护和陪诊服务。该源码适用于各类医院、医疗机构和康复中心等场所&#xff0c;通过小程序实现患者、陪护和医生之间的便捷互动。 陪诊小程序定制功能&#xff1a; 1、用…

利用Termux和cpolar在手机上搭建Hexo博客,实现远程访问的完整指南

文章目录 前言 1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并结合…

CountDownLatch用法、详解

目录 ​编辑 概述&#xff1a; 应用场景&#xff1a; 优点&#xff1a; 缺点&#xff1a; 主要方法&#xff1a; 1. CountDownLatch(int count)&#xff1a; 2. void await()&#xff1a; 3. boolean await(long timeout, TimeUnit unit)&#xff1a; 4. void countDo…

抗EMC干扰高精度隔离放大器ISO EC 系列

SunYuan ISO EC系列模拟信号隔离放大器是一种有较强抗EMC干扰特性的电容耦合隔离混合集成电路。该放大器采用了全新的调制-解调电容耦合隔离技术&#xff0c;模块中信号以数字信号的方式通过电容隔离层进行传输&#xff0c;通过数字调制和电容耦合隔离方式保持信号的完整性&…

电子烟MOS的选型与要求分析

工作原理&#xff1a; 当用户在吸嘴处抽吸时&#xff0c;气流经过进气孔&#xff0c;穿 过电路板上方的咪头&#xff0c;咪头即产生电信号&#xff0c;驱 动芯片板&#xff0c;让电池供电给雾化芯&#xff0c;雾化芯中的 发热丝将电能转化成热能&#xff0c;当温度达到雾化液 …

在线学习平台-学生端

在线学习平台------手把手教程&#x1f448; 学生端课程分页查询 sql: 学生登入时,只能看见自己的所属课程,需要关联查询,查出学生对应的课程 SELECTt2.course_id,t2.course_name,t2.course_cover,t2.teacher_id,t3.nick_name,t2.remarkfrom sys_user t1LEFT JOIN ms_course t…

git查看commit提交记录详情

相关的命令 git log&#xff1a;查看所有的commit提交记录&#xff1b;git show&#xff1a; 查看提交的详情&#xff1b; 首先&#xff0c;需要通过git log显示所有commit记录&#xff1a; 查看最新的commit&#xff1a;git show查看指定commit的所有修改&#xff1a;git s…

计算机网络应用层(期末、考研)

计算机网络总复习链接&#x1f517; 目录 DNS域名服务器域名解析过程分类递归查询&#xff08;给根域名服务器造成的负载过大&#xff0c;实际中几乎不用&#xff09;迭代查询 域名缓存&#xff08;了解即可&#xff09;完整域名解析过程采用UDP服务 FTP控制连接与数据连接 电…

LLM之Prompt(三)| XoT:使用强化学习和蒙特卡罗树搜索将外部知识注入Prompt中,性能超过CoT,ToT和GoT

​论文地址&#xff1a;https://arxiv.org/pdf/2311.04254.pdf 一、当前Prompt技术的局限性 LLM使用自然语言Prompt可以将复杂的问题分解为更易于管理的“thought”可以回复用户的问题。然而&#xff0c;大多数现有的Prompt技术都有局限性&#xff1a; 输入输出&#xff08;I…

centos7服务器上的文件上传到谷歌云盘(google drive)

1,下载gdrive客户端&#xff0c;Releases glotlabs/gdrive GitHub 2&#xff0c;下载完解压,并移动到cp gdrive /usr/local/bin/ 3&#xff0c;查看是否安装成功 4,添加账户&#xff0c;gdrive account add 根据链接&#xff0c;创建Client id和 Client secret 5,填写Client…

HarmonyOS(ArkTS)基础组件参数 媒体类型讲解

我们这里做了一个空的容器 然后 我们可以这样写 Entry Component struct Index {build() {Row() {Column() {Text("你好")Divider()Button("点击")}.width(100%)}.height(100%)} }这里 我们分别使用了三个组件 Text文本组件 Divider分割线组件 Button按钮…

【通俗易懂】基于fabric8io操作k8s集群实战(pod、deployment、service、volume)

目录 前言一、基于fabric8io操作pod1.1 yaml创建pod1.2 fabric8io创建pod案例 二、基于fabric8io创建Service&#xff08;含Deployment&#xff09;2.1 yaml创建Service和Deployment2.2 fabric8io创建service案例 三、基于fabric8io操作Volume3.1 yaml配置挂载存储卷3.2 基于fa…

智能优化算法应用:基于乌鸦算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于乌鸦算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于乌鸦算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.乌鸦算法4.实验参数设定5.算法结果6.参考文献7.MA…

go http服务接收POST请求文件同时接收自定义参数

以gin框架为例&#xff0c;其它框架功能都有&#xff0c;大同小异。 gin中接收文件的方式如下&#xff1a; 单个文件 file : c.FormFile("file") 多个文件 form, err : c.MultipartForm() files : form.File["uoload[]"] 此时files就是所有发来的文件…

JS实现日历表

有需要的可以用一下&#xff0c;这是一个简单的demo. HTML&#xff1a; <table><thead><tr><th colspan"2"><span class"left"></span></th><th colspan"3"><span class"time"&g…

积木艺术化佳乐专用五万颗花型艺术积木诠释东方之美

12月11日,为期四天以“惊喜AMAZE”为主题的2023广州设计周圆满落幕!KALOS BLOCKS佳乐专凭借优秀的产品设计与场馆设计,开展四天,流量爆棚,圈粉无数,在设计周展馆中C位出道,获得现场观众和众多设计师的一致好评! 以梅花之形,现东方之美—— 一次唤醒艺术升维的仪式感一次东方美学…

【数学建模】《实战数学建模:例题与讲解》第九讲-时间序列分析(含Matlab代码)

【数学建模】《实战数学建模&#xff1a;例题与讲解》第九讲-时间序列分析&#xff08;含Matlab代码&#xff09; 基本概念确定性时间序列分析方法平稳时间序列模型ARIMA模型季节性序列 习题8.11. 题目要求2.解题过程3.程序4.结果 习题8.21. 题目要求2.解题过程3.程序4.结果 习…