i.MX 6ULL 裸机 IAR 环境安装

一. IAR 的安装请自行搜索

二. 使用最新版本的 IAR,需要修改 SDK

1. 在 SDK 的 core_ca7.h 加上 

#include "intrinsics.h" /* IAR Intrinsics */ 

2. debug 时需要修改每个工程下的 ddr_init.jlinkscript,参考链接 

Solved: How to connect to imx6Ull with ddr_init.jlinkscript file? - NXP Community

/*********************************************************************
*              SEGGER MICROCONTROLLER GmbH & Co. K.G.                *
*        Solutions for real time microcontroller applications        *
**********************************************************************
*                                                                    *
*        (c) 2011-2015 SEGGER Microcontroller GmbH & Co. KG          *
*                                                                    *
* Internet: www.segger.com Support: support@segger.com               *
*                                                                    *
**********************************************************************
----------------------------------------------------------------------
Purpose : 
---------------------------END-OF-HEADER------------------------------
*/


void Clock_Init() {
  // Enable all clocks
  MEM_WriteU32(0x020c4068,0xffffffff);
  MEM_WriteU32(0x020c406c,0xffffffff);
  MEM_WriteU32(0x020c4070,0xffffffff);
  MEM_WriteU32(0x020c4074,0xffffffff);
  MEM_WriteU32(0x020c4078,0xffffffff);
  MEM_WriteU32(0x020c407c,0xffffffff);
  MEM_WriteU32(0x020c4080,0xffffffff);

  Report("Clock Init Done");
}

void DDR_Init() {
  // Config IOMUX for ddr
  MEM_WriteU32(0x020E04B4,0x000C0000);
  MEM_WriteU32(0x020E04AC,0x00000000);
  MEM_WriteU32(0x020E027C,0x00000030);
  MEM_WriteU32(0x020E0250,0x00000030);
  MEM_WriteU32(0x020E024C,0x00000030);
  MEM_WriteU32(0x020E0490,0x00000030);
  MEM_WriteU32(0x020E0288,0x00000030);
  MEM_WriteU32(0x020E0270,0x00000000);
  MEM_WriteU32(0x020E0260,0x00000030);
  MEM_WriteU32(0x020E0264,0x00000030);
  MEM_WriteU32(0x020E04A0,0x00000030);
  MEM_WriteU32(0x020E0494,0x00020000);
  MEM_WriteU32(0x020E0280,0x00000030);
  MEM_WriteU32(0x020E0284,0x00000030);
  MEM_WriteU32(0x020E04B0,0x00020000);
  MEM_WriteU32(0x020E0498,0x00000030);
  MEM_WriteU32(0x020E04A4,0x00000030);
  MEM_WriteU32(0x020E0244,0x00000030);
  MEM_WriteU32(0x020E0248,0x00000030);
  
  // Config DDR Controller Registers
  MEM_WriteU32(0x021B001C,0x00008000);
  MEM_WriteU32(0x021B0800,0xA1390003);
  MEM_WriteU32(0x021B080C,0x00150019);
  MEM_WriteU32(0x021B083C,0x41550153);
  MEM_WriteU32(0x021B0848,0x40403A3E);
  MEM_WriteU32(0x021B0850,0x40402F2A);
  MEM_WriteU32(0x021B081C,0x33333333);
  MEM_WriteU32(0x021B0820,0x33333333);
  MEM_WriteU32(0x021B082C,0xf3333333);
  MEM_WriteU32(0x021B0830,0xf3333333);
  MEM_WriteU32(0x021B08C0,0x00944009);
  MEM_WriteU32(0x021B08b8,0x00000800);

  // Config MMDC init
  MEM_WriteU32(0x021B0004,0x0002002D);
  MEM_WriteU32(0x021B0008,0x1B333030);
  MEM_WriteU32(0x021B000C,0x676B52F3);
  MEM_WriteU32(0x021B0010,0xB66D0B63);
  MEM_WriteU32(0x021B0014,0x01FF00DB);
  MEM_WriteU32(0x021B0018,0x00201740);
  MEM_WriteU32(0x021B001C,0x00008000);
  MEM_WriteU32(0x021B002C,0x000026D2);
  MEM_WriteU32(0x021B0030,0x006B1023);
  MEM_WriteU32(0x021B0040,0x0000005F);
  MEM_WriteU32(0x021B0000,0x85180000);
  MEM_WriteU32(0x021B0890,0x00400000);
  MEM_WriteU32(0x021B001C,0x02008032);
  MEM_WriteU32(0x021B001C,0x00008033);
  MEM_WriteU32(0x021B001C,0x00048031);
  MEM_WriteU32(0x021B001C,0x15208030);
  MEM_WriteU32(0x021B001C,0x04008040);
  MEM_WriteU32(0x021B0020,0x00000800);
  MEM_WriteU32(0x021B0818,0x00000227);
  MEM_WriteU32(0x021B0004,0x0002552D);
  MEM_WriteU32(0x021B0404,0x00011006);
  MEM_WriteU32(0x021B001C,0x00000000);

  Report("DDR Init Done");
}

/* ConfigTarget */
void ConfigTargetSettings(void)
{
  Report("J-Link script: Setting up AP map");

  CORESIGHT_AddAP(0, CORESIGHT_AHB_AP);

  CORESIGHT_AddAP(1, CORESIGHT_APB_AP);

  CORESIGHT_IndexAPBAPToUse = 1;
  Report("Config JTAG Speed to 4000kHz");
  JTAG_Speed = 4000;
}

/* SetupTarget */
void SetupTarget(void) {
  unsigned int reg;
  reg = MEM_ReadU32(0x021B0000);
  reg = reg & 0x80000000;

  if(reg == 0){
    Report("Enabling i.MX6ULL DDR3L");
    Clock_Init();
    DDR_Init();
  }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

双重检验锁方式实现单例模式

单例模式(Singleton Pattern):是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象&#xff0c…

电源小白入门学习7——USB充电、供电、电源路径管理

电源小白入门学习7——USB充电、供电、电源路径管理 USB充电系统需要考虑的因素开关充电和线性充电充电路径管理输入限流路径管理(动态功率管理)理想二极管帮助提高电池利用率输入过充抑制 上期我们介绍了锂离子电池的电池特性,及充电电路设计…

OpenNJet评测,探寻云原生之美

在信息时代的大海上,云原生应用引擎如一艘航行于波涛之间的帆船,承载着创新的梦想和数字化的未来。本文将带领您登上这艘船,聚焦其中之一的OpenNJet,一同探寻其中的奥秘和精妙,领略其独特之美。 OpenNJet 内容浅析 O…

【JavaScript】数据类型转换

JavaScript 中的数据类型转换主要包括两种:隐式类型转换(Implicit Type Conversion)和显式类型转换(Explicit Type Conversion)。 1. 隐式类型转换(自动转换): js 是动态语言&…

代码随想录第51天 | 309.最佳买卖股票时机含冷冻期

309.最佳买卖股票时机含冷冻期 309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 动态规划来决定最佳时机,这次有冷冻期!| LeetCode:309.买卖股票的最佳时机含冷冻期_哔哩哔哩_bi…

ncnn 算子操作描述

ncnn 算子操作描述,具体查询见 ncnn/docs/developer-guide/operators.md at master Tencent/ncnn GitHub 都是从上述地方copy过来的,做备份。 具体如下: 1.AbsVal: 计算输入张量中的每个元素的绝对值。 y abs(x)one_blob_only 只支持…

Go 语言(四)【常用包使用】

1、命令行参数包 flag flag 包就是一个用来解析命令行参数的工具。 1.1、os.Args import ("fmt""os" )func main() {if len(os.Args) > 0 {for index, arg : range os.Args {fmt.Printf("args[%d]%v\n", index, arg)}} } 运行结果&#…

【Docker】docker部署lnmp和搭建wordpress网站

环境准备 docker:192.168.67.30 虚拟机:4核4G systemctl stop firewalld systemctl disable firewalld setenforce 0 安装docker #安装依赖包 yum -y install yum-utils device-mapper-persistent-data lvm2 #设置阿里云镜像 yum-config-manager --add…

MTEB - Embedding 模型排行榜

文章目录 关于 MTEBMTEB 任务和数据集概览使用 MTEB Pythont 库Installation使用 关于 MTEB MTEB : Massive Text Embedding Benchmark github : https://github.com/embeddings-benchmark/mtebhuggingface : https://huggingface.co/spaces/mteb/leaderboardpaper : https:/…

全国31省对外开放程度、经济发展水平、ZF干预程度指标数据(2000-2022年)

01、数据介绍 自2000年至2022年,中国的对外开放程度不断深化、经济发展水平不断提高、ZF不断探索并调整自身在经济运行中的角色和定位,以更好地适应国内外环境的变化,也取得了举世瞩目的成就。这一期间,中国积极融入全球经济体系…

书籍推荐|经典书籍ic书籍REUSE METHODOLOGY MANUALFOR等和verilog网站推荐(附下载)

大家好,今天是51过后的第一个工作日,想必大家都还没有完全从节假日的吃喝玩乐模式转变为勤勤恳恳的打工人模式,当然也包括我,因此这次更新主要是分享几篇书籍和verilog相关的学习网站~ 首先是一本数字电路相关的基础书籍&#xf…

JavaScript 中的 Class 类

🔥 引言 在ECMAScript 2015(ES6)中,class 关键字被引入,为JavaScript带来了一种更接近传统面向对象语言的语法糖。类是创建对象的模板,它们封装了数据(属性)和行为(方法&…

【SpringMVC 】什么是SpringMVC(一)?如何创建一个简单的springMvc应用?

文章目录 SpringMVC第一章1、什么是SpringMVC2、创建第一个SpringMVC的应用1-3步第4步第5步第6步7-8步3、基本语法1、进入控制器类的方式方式1:方式2:方式3:方式4:方式5:2、在控制器类中取值的方式方式1:方式2:方式3:方式4:方式5:方式6:超链接方式7:日期方式8:aja…

第一天学习(GPT)

1.图片和语义是如何映射的? **Dalle2:**首先会对图片和语义进行预训练,将二者向量存储起来,然后将语义的vector向量转成图片的向量,然后基于这个图片往回反向映射(Diffusion)——>根据这段描…

云原生周刊:Terraform 1.8 发布 | 2024.5.6

开源项目推荐 xlskubectl 用于控制 Kubernetes 集群的电子表格。xlskubectl 将 Google Spreadsheet 与 Kubernetes 集成。你可以通过用于跟踪费用的同一电子表格来管理集群。 git-sync git-sync 是一个简单的命令,它将 git 存储库拉入本地目录,等待一…

深度神经网络中的不确定性研究综述

A.单一确定性方法 对于确定性神经网络,参数是确定的,每次向前传递的重复都会产生相同的结果。对于不确定性量化的单一确定性网络方法,我们总结了在确定性网络中基于单一正向传递计算预测y *的不确定性的所有方法。在文献中,可以找…

如何取消xhr / fetch / axios请求

如何取消xhr请求 setTimeout(() > { xhr.abort() }, 1000)如何取消fetch请求 fetch()请求发送以后,如果中途想要取消,需要使用AbortController对象。 let controller new AbortController(); let signal controller.signal;fetch(url, {signal:…

[激光原理与应用-92]:振镜的光路图原理

目录 一、振镜的光路 二、振镜的工作原理 2.1 概述 2.2 焊接头 2.3 准直聚焦头-直吹头 2.4 准直聚焦头分类——按应用分 2.4.1 准直聚焦头分类——功能分类 2.4.2 准直聚焦头镜片 2.4.3 振镜焊接头 2.4.4 振镜分类: 2.4.5 动态聚焦系统演示(素…

vivado Virtex 和 Kintex UltraScale+ 比特流设置

下表所示 Virtex 和 Kintex UltraScale 器件的器件配置设置可搭配 set_property <Setting> <Value> [current_design] Vivado 工具 Tcl 命令一起使用。

Python使用割圆法求π值

三国时期刘徽提出的割圆法有多牛掰&#xff0c;看这个&#xff1a;刘徽割圆术到底做了什么&#xff1f; - 知乎 用Python实现的该算法代码如下&#xff1a; #!/usr/bin/env python """使用割圆法计算π值Usage::$ python calc_circle_pi.py 20 # 参数20是迭代…
最新文章