Multi Source Translation Content

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Multi Source Translation Content

ディスカッション

ソート順:
How does AI differ from human intelligence? Brolly Academy offers a wide range of trending IT courses designed to provide students with valuable skills and 100% placement assistance. Here are 50 trending IT courses that you can explore at Brolly Academy we are providing best generateai training in hyderabad Re: How does AI differ from human intelligence? Interesting discussion! AI’s strength lies in processing large amounts of data quickly, while human intelligence adds intuition, emotion, and contextual understanding. Both have unique capabilities, and combining them often leads to the most effective solutions. Great topic to explore! https://vignesh156.aiskills.in/   Re: How does AI differ from human intelligence? “Insightful discussion! AI is great at data processing and pattern recognition, but human intelligence still leads with creativity, empathy, and ethical judgment. Combining both strengths is where the real power lies.”       Re: How does AI differ from human intelligence? Welcome to Brollyai, your trusted partner in mastering the future of technology Established in 2021, Brollyai was born out of a vision to bridge the gap between aspiring tech enthusiasts and the rapidly evolving world of artificial intelligence. We are dedicated to  providing top-notch education and hands-on training in the most cutting-edge areas of AI. Our team boasts a wealth of knowledge, with 15 years of collective experience in the industry. Our seasoned faculty members bring a deep understanding of the latest advancements in technology, ensuring that our students receive the highest quality education and training. What We Offer At Brollyai, we specialize in: Generative AI: Dive into the world of creative AI applications, from image generation to advanced natural language processing. Prompt Engineering: Learn the art and science of designing effective prompts to harness the full potential of AI models. Machine Learning: Gain a comprehensive understanding of machine learning techniques, from foundational concepts to advanced algorithms.  we are providing best generateai training in hyderabad Re: How does AI differ from human intelligence? Speed & Processing Power – AI can analyze massive datasets in seconds, whereas humans take much longer. Pattern Recognition – AI excels at detecting patterns in data that might be too complex for humans to recognize. Decision-Making – Humans use reasoning and intuition, while AI relies on algorithms and statistical models. Adaptability – AI improves with more data (machine learning), but humans can apply creativity and context to new problems. Error Handling – AI can reduce human errors but may struggle with ambiguous or incomplete data that humans can interpret better. In data analytics , AI enhances efficiency, but human intelligence is essential for strategic thinking and decision-making Re: How does AI differ from human intelligence? AI and human intelligence are quite different! Humans learn from experiences and emotions, allowing for creativity and intuition. In contrast, AI relies on data and algorithms, making it great at specific tasks but less flexible in new situations. While we can navigate complex social dynamics and have self-awareness, AI doesn’t truly understand or feel. https://generativeaimasters.in/prompt-engineering-course-in-hyderabad/">prompt engineering course in hyderabad
記事全体を表示
IMX93QSB 的 Flexspi_nor_polling_transfer SDK 示例中的供应商 ID 问题 大家好 我使用适用于 VSCode 的 MCUXpresso 来测试类似 imx93-qsb 的定制板的外围设备。从 SDK 项目 " flexspi_nor_polling_transfer " 开始,我想测试或非闪存 MT25QU01GBBB8E12 的功能,它与示例中使用的芯片非常相似:MT25QU512ABB。 当谈到函数 flexspi_nor_get_vendor_id 时,它给出 0xFF 而不是 0x20,然后它会成功完成最后一次操作。         我使用的是与示例相同的 SPI 外设(SD3 焊盘上的 flexSPI1),我不明白为什么我没有正确读取 ID 供应商。谁能帮帮我? Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB 值得一提的是,在扩展 SPI 模式下使用 IS25WX256 时,读 ID 命令 0x9E 也有问题。命令格式为 "FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x9e, kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 4),"。每次使用时,我都会读到 `0x888cadce`。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB 你好@AldoG、 我试着在 flexspi_nor_get_vendor_id 功能中加入一些 PRINTF 命令,以了解 vendorID 值是怎么回事。 输出结果是这样的 我还尝试将 flashXfer.seqIndex 改为 4 *NOR_CMD_LUT_SEQ_IDX_READID,结果输出发生了变化: 我不知道在功能内部反复推敲是否会有帮助。也许问题出在 seqIndex 值本身。请告诉我您的想法。 此致, 鲍勃 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB 您好, ,我发现您使用的正是原样,而不是我建议添加的内容。 我不认为是内存工作不正常,而是获取 ID 的 LUT 命令工作不正常,所以我才提到是否有可能检查发送是否正确。 致以最崇高的敬意/问候, Aldo。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB 你好 我很确定闪存运行良好,因为我已经能够使用这个 UUU 命令放置针对 或非-flash 的引导加载程序: uuu.exe-b qspi imx-启动-imx93-11x11-lpddr4x-evk-sd.bin-flash_singleboot 在 FlexSPI Serial NOR 中设置启动配置,我可以看到引导加载程序运行正常。但我还是不明白,为什么在 MCUXpresso 的 VScode 中使用该项目会出现问题。 如果您能帮助我,请告诉我,我也需要使用 iMX93 的 M33 内核。 谢谢! 鲍勃 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB 您好, 感谢您的分享,我会仔细检查的。 同时,您有办法检查硬件上的信号吗? 致以最崇高的敬意/问候, Aldo。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB 你好,阿尔多、 谢谢你帮我。遗憾的是,对 LUT 的更改并不能解决问题,我仍然在 Vendor ID 上读取到 0xff 的值。我与大家分享整个 C 代码: /* * 版权所有 (c) 2016,飞思卡尔半导体有限公司 * 2016-2018 恩智浦版权所有 * 保留所有权利。 * * * SPDX 许可证标识符:BSD-3 条款 */ #include "pin_mux.h" #include "clock_config.h" #include " board.h " #include "fsl_debug_console.h" #include "fsl_rgpio.h" #include "fsl_lpi2c.h" #include "fsl_iomuxc.h" #include "fsl_lpi2c.c" #include "fsl_flexspi.h" #include "app.h" #include "fsl_debug_console.h" #include "fsl_cache.h" #include "pin_mux.h" #include "clock_config.h" #include " board.h " #include "fsl_common.h" /******************************************************************************* * 定义 ******************************************************************************/ /******************************************************************************* * 原型 ******************************************************************************/ /******************************************************************************* * 变量 ******************************************************************************/ /* 程序数据缓冲区应以 4 字节对齐,这样可以避免总线故障,因为此内存区域配置为 MPU 的设备内存。*/ SDK_ALIGN(静态 uint8_t s_nor_program_buffer[256], 4); 静态 uint8_t s_nor_read_buffer[256]; 外部 status_t flexspi_nor_flash_erase_sector(FLEXSPI_Type *基, uint32_t 地址); 外部 status_t flexspi_nor_flash_page_program(FLEXSPI_Type *基, uint32_t dstAddr, 常数 uint32_t *src); 外部 status_t flexspi_nor_get_vendor_id(FLEXSPI_Type *基础, uint8_t *vendorId); 外部 status_t flexspi_nor_enable_quad_mode(FLEXSPI_Type *基); 外部 status_t flexspi_nor_erase_chip(FLEXSPI_Type *基); 外部 void flexspi_nor_flash_init(FLEXSPI_Type *基); /******************************************************************************* * 代码 ******************************************************************************/ flexspi_device_config_t deviceconfig ={ .flexspiRootClk = 12000000, //12 MHz, ok per noi .闪存大小 = 闪存大小, .CSIntervalUnit = kFLEXSPI_CsIntervalUnit1SckCycle, .CSInterval = 2, .CSHoldTime = 3, .CSSetupTime = 3, .数据验证时间 = 0, .列空间 = 0, .启用 WordAddress = 0, .AWRSeqIndex = 0, .AWRSeqNumber = 0, .ARDSeqIndex = nor_cmd_lut_seq_idx_read, .ARDSeqNumber = 1, .AHBWriteWaitUnit = kFLEXSPI_AhbWriteWaitUnit2AhbCycle, .AHBWriteWaitInterval = 0, }; const uint32_t customLUT[自定义长度] ={ /* 快速读取四通道模式 -SDR */ [4 * nor_cmd_lut_seq_idx_read + 0] = flexspi_lut_seq(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0xEB, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_4PAD, 0x18), [4 * nor_cmd_lut_seq_idx_read + 1] = flexspi_lut_seq( kFLEXSPI_Command_DUMMY_SDR, kFLEXSPI_4PAD, 0x0A, kFLEXSPI_Command_READ_SDR, kFLEXSPI_4PAD, 0x04), /* 读取状态寄存器 */ [4 * nor_cmd_lut_seq_idx_readstatusreg] = flexspi_lut_seq(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0xB5, kFLEXSPI_Command_DUMMY_SDR, kFLEXSPI_4PAD, 0x0), [4 * nor_cmd_lut_seq_idx_readstatusreg + 1] = flexspi_lut_seq(kFLEXSPI_Command_READ_SDR, kFLEXSPI_4PAD, 0x04, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x0), /* 读取 ID */ [4 * nor_cmd_lut_seq_idx_readid] = flexspi_lut_seq(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x9E, kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 0x04),// modifica mia da 0x9F A 0X9E /* 写入启用 4 焊盘 */ [4 * nor_cmd_lut_seq_idx_writeenable_opi] = flexspi_lut_seq(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0x06, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x00), /* 启用写入功能 */ [4 * nor_cmd_lut_seq_idx_writeenable] = flexspi_lut_seq(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0x06, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0), /* 擦除扇区 */ [4 * nor_cmd_lut_seq_idx_erasesector] = flexspi_lut_seq(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0x20, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_4PAD, 0x18), /* 程序 */ [4 * nor_cmd_lut_seq_idx_pageprogram_quad] = flexspi_lut_seq(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0x32, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_4PAD, 0x18), [4 * nor_cmd_lut_seq_idx_pageprogram_quad + 1] = flexspi_lut_seq(kFLEXSPI_Command_WRITE_SDR, kFLEXSPI_4PAD, 0x01, kFLEXSPI_Command_STOP, kFLEXSPI_4PAD, 0), /* 进入四重模式 */ [4 * nor_cmd_lut_seq_idx_enablequad] = flexspi_lut_seq(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x35, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x00), /* 虚拟写入,当 AHB 写入命令触发时,不执行任何操作。*/ [4 * nor_cmd_lut_seq_idx_write] = flexspi_lut_seq(kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x0, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x0), /* 使用 Qual SDR 读取功能读取状态寄存器 */ [4 * nor_cmd_lut_seq_idx_readstatus_opi] = flexspi_lut_seq(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0x05, kFLEXSPI_Command_READ_SDR, kFLEXSPI_4PAD, 0x02), }; int main(void) { uint32_t i = 0; status_t 状态; uint8_t 供应商 ID = 0; pcal6524_handle_t 句柄; /* 关闭 clang-format */ const clock_root_config_t lpi2cClkCfg ={ .时钟关闭 = false, .mux = 0,// 24MHz 振荡源 .分隔 = 1 }; /* clang-format on */ BOARD_ConfigMPU(); BOARD_InitBootPins(); BOARD_BootClockRUN(); BOARD_InitDebugConsole(); CLOCK_SetRootClock(BOARD_PCAL6524_I2C_CLOCK_ROOT, &lpi2cClkCfg); CLOCK_EnableClock(BOARD_PCAL6524_I2C_CLOCK_GATE); /* 为 M.2 或非闪存卡设置 3.3V */ BOARD_InitPCAL6524(&句柄); PCAL6524_SetDirection(&处理, (1 << BOARD_PCAL6524_EXT1_PWREN), kPCAL6524_Output); PCAL6524_SetPins(&处理, (1 << BOARD_PCAL6524_EXT1_PWREN)); flexspi_nor_flash_init(example_flexspi); PRINTF("\r\nFLEXSPI 示例启动!\r\n"); /* 获取供应商 ID。*/ 状态 = flexspi_nor_get_vendor_id(示例, &vendorID); 如果(status != kStatus_Success)     { 返回 状态;    } PRINTF("供应商 ID: 0x%x\("......")", vendorID); #if !(定义(xip_external_flash)) /* 擦除整个芯片 .*/ PRINTF("通过 FlexSPI 擦除整个芯片...\r\n"); 状态 = flexspi_nor_erase_chip(example_flexspi); 如果状态 !=kStatus_Success)     { 返回状态    } PRINTF("擦除完毕\r\n"); #endif /* 进入四重模式。*/ 状态 = flexspi_nor_enable_quad_mode(example_flexspi); 如果(status != kStatus_Success)     { 返回 状态;    } /* 擦除扇区。*/ PRINTF (" 通过 FlexSpi 擦除序列号 或非...\ r\n "); 状态 = flexspi_nor_flash_erase_sector(示例, 示例 * SECTOR_SIZE); 如果(status != kStatus_Success)     { PRINTF("擦除扇区失败 !\)"); 返回 -1;    } memset(s_nor_program_buffer, 0xFFU, ((s_nor_program_buffer)); DCACHE_InvalidateByRange(example_flexspi_amba_base + 示例 * ()()()()()(, flash_page_size); memcpy(s_nor_read_buffer, (void *)(example_flexspi_amba_base + 示例 * SECTOR_SIZE), ((s_nor_read_buffer)); 如果(memcmp(s_nor_program_buffer, s_nor_read_buffer, ((s_nor_program_buffer)))     { PRINTF("Erase data - read out data value incorrect !\r\n "); 返回 -1;    } 不然     { PRINTF("Erase data - successfully. \r\n");    } 为(i = 0; i < 0xFFU; i++)     { s_nor_program_buffer[i] = i;    } 状态 = flexspi_nor_flash_page_program(示例, 示例 * SECTOR_SIZE, (空格 *)s_nor_program_buffer); 如果(status != kStatus_Success)     { PRINTF("页面程序失败 !\r\n"); 返回 -1;    } DCACHE_InvalidateByRange(example_flexspi_amba_base + 示例 * ()()()()()(, flash_page_size); memcpy(s_nor_read_buffer, (void *)(example_flexspi_amba_base + 示例 * SECTOR_SIZE), ((s_nor_read_buffer)); 如果(memcmp(s_nor_read_buffer, s_nor_program_buffer, ((s_nor_program_buffer)) != 0)     { PRINTF("程序数据 - 读出数据值不正确 !\r\n "); 返回 -1;    } 不然     { PRINTF("程序数据 - 成功。 \r\n");    } 状态 = flexspi_nor_get_vendor_id(示例, &vendorID); 如果(status != kStatus_Success)     { 返回 状态;    } PRINTF("供应商 ID: 0x%x\("......")", vendorID); PRINTF("状态: %d\,......。", status); 虽然(1)     {    } } Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB 您好, 感谢您的测试,那么很可能是在执行 READ ID 时 LUT 序列不正确,请尝试对 LUT 进行以下更改: /* 读 ID */ [4 * NOR_CMD_LUT_SEQ_IDX_READID] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD,0x9E, kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 0x04), 请尝试并告知我结果。 致以最崇高的敬意/问候, Aldo。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB 是的,我按照您的建议添加了这段代码: 遗憾的是,正如你所看到的,一切都没有改变: @AldoG你有其他想法吗? 谢谢! 鲍勃 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB 您好, hw 上的一切看起来都很好,您能否尝试在数据编程后添加读取供应商 ID 的功能? 致以最崇高的敬意/问候, Aldo。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB 你好,阿尔多、 感谢您的回复。这些是连接 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB 你好, 这可能是由于没有正确处理SPI内存上的RESET信号造成的,你能分享一下你是如何连接内存的吗? 如果您能提供一个小的原理图,那将会非常有帮助。 致以最崇高的敬意/问候, Aldo。
記事全体を表示
XGATE 问题 MC9S12XEP100。我想使用 XGATE 做一些代码实验,用绝对汇编程序编码。使用 Code Warrior 5.9.0 特别版 版本 5294 甚至有可能做到这一点吗? 此致, 罗伯特-希伯特 Re: XGATE Question 嗨,快、 听到你的声音我真是太高兴了 我发现在这个用汇编程序为 XEP100 编程的世界里非常孤独,尤其是当你把 XGATE 加入其中的时候。XEP100 可以实现我想要的一切,甚至更多。我不会说"C" ,但我非常喜欢绝对汇编程序。我尝试重新定位的唯一原因是,到目前为止,这是我能让 XGATE 正常工作的唯一方法。 我一直在花大量时间研究手册和我能找到的所有应用程序说明,以获得如何实现目标的线索。当我遇到困难时,我会感到非常沮丧,但当事情成功时,我又会感到非常有成就感。这几乎是一份全职工作。 如果您能抽出时间帮我指明方向,那就太好了。我希望能与你们分享我的项目。如果您愿意,我们可以在论坛外继续讨论,或许可以将积极的结果公布出来,供其他人使用。 我会试着给你发一条私人信息,这样我们就能建立联系了。 非常感谢您的关注。 此致, 罗伯特 Re: XGATE Question 我只用 XGATE 汇编语言编写。也许我能帮上忙。我喜欢这该死的东西。不清楚为什么要重新定位代码。你不可能用汇编程序填满 32K,因为没有理由不使用子程序。代码战士可能不适合执行任务。显示一个好的 .asm锉刀 我使用的是 6502 和 8080,7 个寄存器太奢侈了。 Re: XGATE Question 尽管我已经尽了最大努力,但仍无法用绝对汇编程序编写任何 XGATE 代码。不过,我在用可重置汇编程序编写一个程序方面取得了一些进展,现附上该程序。 下一步是将我用绝对汇编程序编写的一些代码尝试转换为可重置代码,并添加 XGATE。到目前为止,我还没有取得很大进展,但至少我现在有了一些可以工作的 XGATE 代码。 感谢拉迪斯拉夫的协助。 此致, 罗伯特 Re: XGATE Question 你好,拉迪斯拉夫 这是一篇大作文,而且是用"C" 写成的,我完全无法理解。 我确实有 AN 2734,HCS12X 系列 Memory Organization,但我看不出里面提到 XGATE。当然,MC9S12XEP100RMV1 02/20/13 确实包含 XGATE 内存映射。我会再研究一下这两本书,看看是否有更清晰的认识。 如果可以的话,我们能否回到我早些时候(7/21/25)在这个主题中提出的一个问题。我注意到在 10.9.2 版本的参考手册中有代码示例(Transmit " Hello World!" 在 SCI 上)。这向我表明,可以用绝对汇编程序编写使用 XGATE 的代码。但是,当我尝试在 Code Warrior 上运行代码时,它却卡住了,并告诉我"CPU S12X" 不是 hc12 指令。 要运行这段代码,我需要做些什么? 此致, 罗伯特 Re: XGATE Question 您好, 很久以前,我给你寄过一张记忆地图。现在您应该了解哪个内核使用哪种寻址模式,以及如何访问数据和代码。 CPU 在 PPAGE_OFFSET 上运行,但通常使用 GPAGE_offset 读/写数据,以简化访问。 XGATE 可通过闪存或 RAM 运行。在从 RAM 运行之前,必须将其从闪存复制到相应的内存空间。如果希望 XGATE 从闪存运行,则需要在创建项目时进行配置,然后就不需要复制了。 我的建议是,始终通过正确的内存位置在每个模块中引入代码... 例如 #pragma CODE_SEG DEFAULT #pragma DATA_SEG DEFAULT #pragma CODE_SEG XGATE_CODE_FLASH #pragma DATA_SEG SHARED_DATA #pragma DATA_SEG XGATE_DATA 对于复制过程(如果使用--我不打算检查),我建议使用 GLD/GST 指令,以便轻松访问全局内存空间。如内存映射图所示,使用 16 位寻址(从 CPU 的角度看),只有部分 RAM 可以访问数据。要写入通过 16 位寻址不可见的 RAM 部分,必须使用 GPAGE 或 RPAGE 寻址模式。但是,当 XGATE 运行时,它会使用 16 位寻址查看整个 RAM。 当然,即使代码从闪存中运行,仍可以使用 copyToRam 函数来初始化 CPU 和 XGATE 的变量。 我强烈建议始终使用模拟器或调试器进行测试,以便更好地了解行为。必须测试内存窗口中的不同地址,即在同一地址空间内但使用不同寻址模式的地址,以验证它们之间是否可见相同的内容。 坦率地说,我目前正在 XDT512 上创建自己的业余项目,也需要进行大量调试,以确保一切都符合预期,结果也符合预期。此外,警告也是必须阅读的内容。我把显示功能放到了 xgate 中,由 CPU 通过 swi 调用它们。为了避免出错,我总是使用整数作为变量(xgate 会给数组和结构带来问题,因为 char 不是很好的变量)。我还必须为指针创建转换函数......可参见 conversion.c。而且我还使用了特定的方法来初始化从 cpu 传递给 xgate 的输入参数... 例如,你可以看到 lcdcSetup (...。),我调用 CPU,它填充了特定的结构,然后在 lcd_command_wrappers.c 模块中准备好数据集之后,void lcdxSetup(TuI 设置)使用该结构,然后在数据准备好后由 SWI 用上市 xgate。当然,也可能需要准备一定量的共享数据并采用不同的方法,但这就是我从 CPU 向 xgate 函数传递参数的方法。 我不想混淆或吓唬你们。我只想说,组合越多,期望越高,需要解决的问题就越多,任务就越复杂。经过最初的努力,一切都会变得更加容易和清晰。一切都可以变得简单或复杂。我有一个用于 CPU 的 LCD 模块,想尽可能方便地将它与 xgate 连接,于是就用了这个解决方案。这可以说是毫无用处的,因为 XGATE 的目的是用于小型快速任务。在这种情况下,我想把 CPU 从长时间发送数据的任务中解脱出来。 目前,我也遇到了一些问题,但我会一步步解决,这也是我对你们的建议。 S12X 设备非常简单,你可以完全删除编译器生成的所有文件,只需将堆栈作为代码的第一条指令加载即可,然后一切都在你的控制之下。 顺祝商祺! 拉吉斯拉夫 Re: XGATE Question 你好,拉迪斯拉夫 最近这里的事情太忙了,我没有太多时间花在我的项目上,但我终于可以重新开始了。我一直在研究你发给我的代码,以及我可以用 Code Warrior 创建的示例。从本质上讲,它是在 RAM 中添加了 XGATE 的可重置汇编程序 Fibo 计算程序。 我相信我已经很好地理解了它的工作原理,但有一件事让我很困惑。 当我逐步浏览代码并关注寄存器和内存时," CopyToram " 宏对我来说不太有感知。PPAGE 为 $FE,GPAGE 为 $7F,RPAGE 为 $F8。 我希望闪存中的 XGATE 代码从逻辑地址 $7F8000 开始,然后复制到逻辑地址 $F81100 的 RAM 中。但事实上,XGATE 代码是从逻辑地址 $FE8000 开始的,它能很好地复制到预期的 RAM 地址。 我错过了什么? 此致, 罗伯特 Re: XGATE Question 您好, a) 清理后的项目附在原处。旧的那个被移走了。从功能角度看,旧版本也没有问题,只是不小心添加了一些东西。 现在应该没问题了。 b) 在指针位于空白窗口时按下鼠标右键,打开源文件,选择 xgate.dbg,然后断点进入 PIT0_Handler。 运行后,您可以看到它在 xgate 中停止。 以及 CPU 顺祝商祺! 拉吉斯拉夫 Re: XGATE Question 你好,拉迪斯拉夫 我可以运行您的 .asm如果我切换到 USBDM,我的板上有代码,但我收到以下消息。它们不会阻止我制作或运行程序: ************* 项目"XP100-PIT_XGATE_SEMAPHORES-ASM-C52.mcp 的目标"标准" 中的以下访问路径"无法找到: (项目)...\XP100-PIT_XGATE_SEMAPHORES-ASM-C51 在目标"中找不到"XP100-PIT_XGATE_SEMAPHORES-ASM-C51.mcp" 标准" ******** 我可以设置断点,并在 source1 窗口中逐步查看源代码。 我想设置断点并逐步浏览 XGATE 代码,但它并没有出现在 source2 窗口中。我是否漏掉了什么设置? 此致, 罗伯特 Re: XGATE Question 你好,拉迪斯拉夫 非常感谢你们的帮助,谢谢。如果可以的话,我会用"C" 进行编码,但我不懂这门语言。我曾尝试自学,但对我来说太晦涩难懂了。我喜欢汇编程序,因为我可以用调试器观察寄存器和内存。这对我来说是有感知的。我的程序并不庞大,而且只有我一个人创建。所以我更喜欢绝对汇编程序。 总之,我会仔细研究你的附件,看看能做些什么。再次表示感谢。 此致, 罗伯特 Re: XGATE Question 您好, 好吧,我现在再创建一个示例(基于 c 项目,拆解后移植到 asm 项目),只是想知道我是否忘记了。 ......不是 RTI,而是两个 PIT 生成时段。一个位于 CPU(PIT1),另一个位于 XGATE(PIT0)。两个模块都使用一个共享的 8 位变量 XGATE_diodes,该变量在 PIT 中断中被修改,对该变量的访问由 Semaphores 控制。 它让你知道,我认为一切。我还使用了不同的寻址方式:一次是寄存器定义,一次是直接编号......仅举一例。 ......正如我多次表达的那样....,在这种情况下,我不会在 xgate 使用 asm 编程。更简单的是 C 代码,它也能自动解决你可能遇到的许多问题。 ASM 和 C 项目附后。 顺祝商祺! 拉吉斯拉夫 Re: XGATE Question 你好,拉迪斯拉夫 我花了几天时间深入研究代码,一步一步地看,并记录下每一步相关寄存器和变量的状态。我确定变量 XGATE_Counter 位于地址 $2100:2101 处,变量 Counter 位于地址 $2102:2103 处,变量 FiboRes 位于地址 $2104:2105 处。 我按照您的指导逐步完成了 XGATE 代码,并观察了 RAM 内存。后来我才恍然大悟,原来我并没有完全理解这段代码的工作原理。我以为 XGATE 是用来更新 Counter 的,但情况似乎并非如此。它所做的只是递增 XGATE_Counter,与计算斐波那契数字无关。 假设这些都是正确的,那么这将是一次相当难得的学习经历,但我仍然对如何使用 XGATE 感到困惑。 我想先在一个简短的例程中使用 RTI 来建立一些时间率并设置一些标志,这样程序就可以在主循环中将它们用于不同的例程。是否有一些示例代码可以帮助我接近这一目标? 谢谢! 此致, 罗伯特 Re: XGATE Question 您好, SWI 仅在示例中启用,因此我建议您设置断点 然后选择 XGATE 窗口(如图所示为深蓝色),按运行键。每次中断结束时,当中断进入中断机时,它都会被评估为待处理的中断,因此它会再次用上市。 ....并能看到所有变化 ... 几步之后 .... 只是举一个不同方法的小例子... 我目前正在玩(业余活动)将 LCD 驱动程序移至 XGATE... 但是在 C 语言中我使用 SW 触发信号来用上市像这样的 LCD 服务例程... 例如... 我有定义... #define SET_SW_TRIG_LCD XGSWT=(0x0101<< SWI_LCD) // SWI_LCD 为 0 ... 选择 SWI_0 #define REL_SW_TRIG_LCD XGSWT=(0x0100<< SWI_LCD) 然后是 HD44780.c它准备共享数据并用上市SWI的液晶屏服务例程。 tuC lcdCoutTextLC(TuC 线、tuC col、tsC *str){ if(LCD_IS_BUSY) 返回 C_LCD_IS_BUSY; xgateCmdBlock.func_id = LCD_OUT_TEXT_LC; xgateCmdBlock.params.lineColText.line = line; xgateCmdBlock.params.lineColText.col = col; xgateCmdBlock.params.lineColText.str = str; SET_SW_TRIG_LCD;<< < < < < < < < < < < < < < < 这里我启动 LCD 服务 } ... 然后我在 xgate.cxgate 中版本它是为了为下一步行动做准备...XGSWT 值还用作 LCD 忙碌的标志 中断 void SoftwareTrigger0_Handler(void) { LCDxCommandExecution(); REL_SW_TRIG_LCD;//版本 SW 触发信号 0 } 代码已翻译如下... (XGSWT = (0x0100 < < 0);) 12: REL_SW_TRIG_LCD;//版本 SW 触发信号 0 0008 f200 LDL R2,#0 000a aa01 ORH R2,#1 000c f300 LDL R3,#%XGATE_8(_XGSWT) 000e ab00 ORH R3,#%XGATE_8_H(_XGSWT) 0010 5a60 STW R2,(R3,#0) 顺祝商祺! 拉吉斯拉夫 Re: XGATE Question 我在这方面进展不大。我按照你的建议,用可重置汇编器和 XGATE 创建了新的示例项目。当我运行它并再次停止时,我可以看到计数器和 Fibo 结果都已更新。当停止运行时,我可以看到 XGATE R1、R2、R7、PC、MCTL、CHIP 和 VBR 发生了变化,或者至少有一些发生了变化。 当我浏览 main.asm 代码时,我可以看到数字和寄存器的更新,但看不到运行 XGATE 代码的地方。 看起来 XGATE 代码所做的只是在触发信号软件中断时更新计数器,但我看不出是什么引发了 XGATE 的软件中断。 Re: XGATE Question 你好,拉迪斯拉夫 是的,我试过,但没有成功。也许我只是一次性传输了太多的代码。我再试一次,慢慢来。谢谢。 此致, 罗伯特 Re: XGATE Question 您好, 你有没有尝试过创建一个使用 sw 触发信号示例创建默认结构的新项目。它还介绍了共享变量处理(非 Semaphores)。有了这些,您就可以用自己的代码对其进行扩展。但是,我建议一步一步来,审查所有内容。 顺祝商祺! 拉吉斯拉夫 Re: XGATE Question 你好,拉迪斯拉夫 我一直在研究《XGATE 汇编程序手册》.PDF 文件,在你指出的地方找到了它,但恐怕里面的解释对我来说并不清楚。 在反复阅读 MC9S12XEP100RMV1 手册时,我确实发现有一些内容向我表明,用绝对汇编程序为 S12X CPU 和 XGATE 编写代码是可能的。它位于手册第 10.9.2 节,标题为代码示例(在 SCI 上传输"Hello World" )。 但是,当我尝试用 Code Warrior 运行它时,它马上就瘫痪了。第一个错误是"CPU S12X" 不是 hc12 指令或指令。 运行该程序需要做什么? Re: XGATE Question 感谢拉迪斯拉夫我看看能否在那里找到答案。 此致, 罗伯特 Re: XGATE Question 您好, 我不认识任何从事绝对装配工作的人,尤其是使用 XGATE 的人。可以创建多核(CPU+XGATE)的可重定位程序集项目。 一些信息可以在 CW 的安装文件夹中找到 - Assembler_XGATE.pdf 文件......例如在我的电脑中... c:\Program Files (x86)\Freescale\CWS12v5.2\Help\pdf\ 顺祝商祺! 拉吉斯拉夫
記事全体を表示
人工智能与人类智能有何不同? Brolly Academy 提供广泛的 IT 潮流课程,旨在为学生提供宝贵的技能和 100% 就业援助。 以下是您可以在布罗利学院探索的 50 门热门 IT 课程 我们在海得拉巴提供最好的generateai 培训 Re: How does AI differ from human intelligence? 有趣的讨论人工智能的优势在于快速处理大量数据,而人类智能则增加了直觉、情感和对上下文的理解。两者都有独特的能力,将它们结合起来往往能找到最有效的解决方案。值得探讨的好话题!https://vignesh156.aiskills.in/   Re: How does AI differ from human intelligence? "有见地的讨论!人工智能在数据处理和模式识别方面非常出色,但人类智能在创造力、同理心和道德判断力方面仍处于领先地位。将这两种优势结合起来,才是真正的力量所在。       Re: How does AI differ from human intelligence? 欢迎来到 Brollyai,您在掌握未来技术方面值得信赖的合作伙伴 Brollyai 成立于 2021 年,其诞生源于一个愿景,即在有抱负的技术爱好者与快速发展的人工智能世界之间架起一座桥梁。我们专用于在最前沿的人工智能领域提供一流的教育和实践培训。 我们的团队拥有丰富的知识和 15 年的行业经验。我们经验丰富的教师对最新的技术进步有着深刻的理解,确保学生获得最高质量的教育和培训。 我们提供: 在布罗莱艾,我们的专长是 生成式人工智能: 潜入创造性人工智能应用的世界,从图像生成到高级自然语言处理。 提示工程: 学习设计有效提示的艺术和科学,以充分发挥人工智能模型的潜力。 机器学习: 全面了解从基础概念到高级算法的机器学习技术。 我们提供最好的 培训在海德拉巴 Re: How does AI differ from human intelligence? 速度& 处理能力--人工智能可以在数秒内分析海量数据集,而人类则需要更长的时间。 模式识别--人工智能擅长从数据中发现人类无法识别的复杂模式。 决策--人类使用推理和直觉,而人工智能则依赖算法和统计模型。 适应性--人工智能会随着数据的增多(机器学习)而不断改进,但人类可以将创造力和情境应用于新问题。 错误处理--人工智能可以减少人为错误,但在处理模棱两可或不完整的数据时可能会遇到困难,而人类可以更好地解释这些数据。 在 数据分析人工智能提高了效率,但人类智慧对于战略思考和决策至关重要 Re: How does AI differ from human intelligence? 人工智能与人类智慧截然不同!人类从经验和情感中学习,从而产生创造力和直觉。相比之下,人工智能依赖于数据和算法,因此在特定任务中表现出色,但在新情况下灵活性较差。虽然我们可以驾驭复杂的社会动态并具有自我意识,但人工智能却无法真正理解或感受。 https://generativeaimasters.in/prompt-engineering-course-in-hyderabad/"> 海得拉巴的及时工程课程
記事全体を表示
Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB Hello everyone, I'm using MCUXpresso for VSCode in order to test the peripherals of a custom board similar to imx93-qsb. Starting from the SDK project "flexspi_nor_polling_transfer" I would like to test the functionality of NOR flash MT25QU01GBBB8E12, very similar to the chip used in the example: MT25QU512ABB. When it comes to the function flexspi_nor_get_vendor_id it gives 0xFF instead of 0x20, then it completes the last operations successfully.         I'm using the same SPI peripheral of the example (flexSPI1 on SD3 pads), I'don't understand why I'm not reading the ID vendor correctly. Can anyone help me? Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB For what it's worth, I also have issues with the Read ID command 0x9E when using IS25WX256 in extended SPI mode. The command is `FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x9e, kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 4),`. Each time I use it I read `0x888cadce`. Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB Hello @AldoG , I tried to put some PRINTF command inside the flexspi_nor_get_vendor_id fuction in order to understand what's going on with vendorID value. The output is this: I tried also to change flashXfer.seqIndex to 4 * NOR_CMD_LUT_SEQ_IDX_READID and the output changed: I don't know if it could be helpful to go over and over inside the functions. Maybe the problem is seqIndex value itself. Let me know your thoughts. Regards, Bob Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB Hello, I see that you are using exactly the example as it is, asde from the addition I have recommended. I do not think that the memory is not working correctly, more than the LUT command to get the ID is not working correctly this is why I mentioned if it is possible to check if it is being sent correctly. Best regards/Saludos, Aldo. Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB Hello, I'm pretty sure the Flash memory is working well because I've been able to put a bootloader targeting nor-flash with this UUU command: uuu.exe -b qspi imx-boot-imx93-11x11-lpddr4x-evk-sd.bin-flash_singleboot Setting the boot configuration in FlexSPI Serial NOR, I can see that the bootloader is running correctly. But I still don't understand why there are issues using this project in MCUXpresso for VScode. Please let me know if you can help me, I need to work also with iMX93's M33 core. Thanks, Bob Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB Hello, Thank you for sharing, I will check it carefully. Meanwhile is there any way for you to check the signals on the hardware? Best regards/Saludos, Aldo. Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB Hello Aldo, Thanks for helping me. Unfortunately, This change on the LUT is not the solution, I'm still reading 0xff on Vendor ID. I share with you all the entire C code: /*  * Copyright (c) 2016, Freescale Semiconductor, Inc.  * Copyright 2016-2018 NXP  * All rights reserved.  *  *  * SPDX-License-Identifier: BSD-3-Clause  */  #include "pin_mux.h"  #include "clock_config.h"  #include "board.h"  #include "fsl_debug_console.h"  #include "fsl_rgpio.h"  #include "fsl_lpi2c.h"  #include "fsl_iomuxc.h"  #include "fsl_lpi2c.c" #include "fsl_flexspi.h" #include "app.h" #include "fsl_debug_console.h" #include "fsl_cache.h" #include "pin_mux.h" #include "clock_config.h" #include "board.h" #include "fsl_common.h" /*******************************************************************************  * Definitions  ******************************************************************************/ /*******************************************************************************  * Prototypes  ******************************************************************************/ /*******************************************************************************  * Variables  ******************************************************************************/ /* Program data buffer should be 4-bytes alignment, which can avoid busfault due to this memory region is configured as    Device Memory by MPU. */ SDK_ALIGN(static uint8_t s_nor_program_buffer[256], 4); static uint8_t s_nor_read_buffer[256]; extern status_t flexspi_nor_flash_erase_sector(FLEXSPI_Type *base, uint32_t address); extern status_t flexspi_nor_flash_page_program(FLEXSPI_Type *base, uint32_t dstAddr, const uint32_t *src); extern status_t flexspi_nor_get_vendor_id(FLEXSPI_Type *base, uint8_t *vendorId); extern status_t flexspi_nor_enable_quad_mode(FLEXSPI_Type *base); extern status_t flexspi_nor_erase_chip(FLEXSPI_Type *base); extern void flexspi_nor_flash_init(FLEXSPI_Type *base); /*******************************************************************************  * Code  ******************************************************************************/ flexspi_device_config_t deviceconfig = {     .flexspiRootClk       = 12000000,                                                       //12 MHz, ok per noi     .flashSize            = FLASH_SIZE,     .CSIntervalUnit       = kFLEXSPI_CsIntervalUnit1SckCycle,     .CSInterval           = 2,     .CSHoldTime           = 3,     .CSSetupTime          = 3,     .dataValidTime        = 0,     .columnspace          = 0,     .enableWordAddress    = 0,     .AWRSeqIndex          = 0,     .AWRSeqNumber         = 0,     .ARDSeqIndex          = NOR_CMD_LUT_SEQ_IDX_READ,     .ARDSeqNumber         = 1,     .AHBWriteWaitUnit     = kFLEXSPI_AhbWriteWaitUnit2AhbCycle,     .AHBWriteWaitInterval = 0, }; const uint32_t customLUT[CUSTOM_LUT_LENGTH] = {     /* Fast read quad mode -SDR */     [4 * NOR_CMD_LUT_SEQ_IDX_READ + 0] =         FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0xEB, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_4PAD, 0x18),     [4 * NOR_CMD_LUT_SEQ_IDX_READ + 1] = FLEXSPI_LUT_SEQ(         kFLEXSPI_Command_DUMMY_SDR, kFLEXSPI_4PAD, 0x0A, kFLEXSPI_Command_READ_SDR, kFLEXSPI_4PAD, 0x04),     /* Read status register */     [4 * NOR_CMD_LUT_SEQ_IDX_READSTATUSREG] =         FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0xB5, kFLEXSPI_Command_DUMMY_SDR, kFLEXSPI_4PAD, 0x0),     [4 * NOR_CMD_LUT_SEQ_IDX_READSTATUSREG + 1] =         FLEXSPI_LUT_SEQ(kFLEXSPI_Command_READ_SDR, kFLEXSPI_4PAD, 0x04, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x0),     /* Read ID */     [4 * NOR_CMD_LUT_SEQ_IDX_READID] =         FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x9E, kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 0x04), // modifica mia da 0x9F A 0X9E     /*  Write Enable 4 pad */     [4 * NOR_CMD_LUT_SEQ_IDX_WRITEENABLE_OPI] =         FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0x06, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x00),     /*  Write Enable */     [4 * NOR_CMD_LUT_SEQ_IDX_WRITEENABLE] =         FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0x06, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0),     /*  Erase Sector */     [4 * NOR_CMD_LUT_SEQ_IDX_ERASESECTOR] =         FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0x20, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_4PAD, 0x18),     /*  Program */     [4 * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD] =         FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0x32, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_4PAD, 0x18),     [4 * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD + 1] =         FLEXSPI_LUT_SEQ(kFLEXSPI_Command_WRITE_SDR, kFLEXSPI_4PAD, 0x01, kFLEXSPI_Command_STOP, kFLEXSPI_4PAD, 0),     /* Enter Quad mode */     [4 * NOR_CMD_LUT_SEQ_IDX_ENABLEQUAD] =         FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x35, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x00),     /*  Dummy write, do nothing when AHB write command is triggered. */     [4 * NOR_CMD_LUT_SEQ_IDX_WRITE] =         FLEXSPI_LUT_SEQ(kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x0, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x0),     /*  Read status register using Qual SDR read */     [4 * NOR_CMD_LUT_SEQ_IDX_READSTATUS_OPI] =         FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_4PAD, 0x05, kFLEXSPI_Command_READ_SDR, kFLEXSPI_4PAD, 0x02), }; int main(void) {     uint32_t i = 0;     status_t status;     uint8_t vendorID = 0;     pcal6524_handle_t handle;     /* clang-format off */     const clock_root_config_t lpi2cClkCfg = {         .clockOff = false,         .mux = 0, // 24MHz oscillator source         .div = 1     };     /* clang-format on */     BOARD_ConfigMPU();     BOARD_InitBootPins();     BOARD_BootClockRUN();     BOARD_InitDebugConsole();     CLOCK_SetRootClock(BOARD_PCAL6524_I2C_CLOCK_ROOT, &lpi2cClkCfg);     CLOCK_EnableClock(BOARD_PCAL6524_I2C_CLOCK_GATE);     /* Set 3.3V for M.2 nor flash card */     BOARD_InitPCAL6524(&handle);     PCAL6524_SetDirection(&handle, (1 << BOARD_PCAL6524_EXT1_PWREN), kPCAL6524_Output);     PCAL6524_SetPins(&handle, (1 << BOARD_PCAL6524_EXT1_PWREN));     flexspi_nor_flash_init(EXAMPLE_FLEXSPI);     PRINTF("\r\nFLEXSPI example started!\r\n");     /* Get vendor ID. */     status = flexspi_nor_get_vendor_id(EXAMPLE_FLEXSPI, &vendorID);     if (status != kStatus_Success)     {         return status;     }     PRINTF("Vendor ID: 0x%x\r\n", vendorID); #if !(defined(XIP_EXTERNAL_FLASH))     /* Erase whole chip . */     PRINTF("Erasing whole chip over FlexSPI...\r\n");     status = flexspi_nor_erase_chip(EXAMPLE_FLEXSPI);     if (status != kStatus_Success)     {         return status;     }     PRINTF("Erase finished !\r\n"); #endif     /* Enter quad mode. */     status = flexspi_nor_enable_quad_mode(EXAMPLE_FLEXSPI);     if (status != kStatus_Success)     {         return status;     }     /* Erase sectors. */     PRINTF("Erasing Serial NOR over FlexSPI...\r\n");     status = flexspi_nor_flash_erase_sector(EXAMPLE_FLEXSPI, EXAMPLE_SECTOR * SECTOR_SIZE);     if (status != kStatus_Success)     {         PRINTF("Erase sector failure !\r\n");         return -1;     }     memset(s_nor_program_buffer, 0xFFU, sizeof(s_nor_program_buffer));     DCACHE_InvalidateByRange(EXAMPLE_FLEXSPI_AMBA_BASE + EXAMPLE_SECTOR * SECTOR_SIZE, FLASH_PAGE_SIZE);     memcpy(s_nor_read_buffer, (void *)(EXAMPLE_FLEXSPI_AMBA_BASE + EXAMPLE_SECTOR * SECTOR_SIZE),            sizeof(s_nor_read_buffer));     if (memcmp(s_nor_program_buffer, s_nor_read_buffer, sizeof(s_nor_program_buffer)))     {         PRINTF("Erase data -  read out data value incorrect !\r\n ");         return -1;     }     else     {         PRINTF("Erase data - successfully. \r\n");     }     for (i = 0; i < 0xFFU; i++)     {         s_nor_program_buffer[i] = i;     }     status =         flexspi_nor_flash_page_program(EXAMPLE_FLEXSPI, EXAMPLE_SECTOR * SECTOR_SIZE, (void *)s_nor_program_buffer);     if (status != kStatus_Success)     {         PRINTF("Page program failure !\r\n");         return -1;     }     DCACHE_InvalidateByRange(EXAMPLE_FLEXSPI_AMBA_BASE + EXAMPLE_SECTOR * SECTOR_SIZE, FLASH_PAGE_SIZE);     memcpy(s_nor_read_buffer, (void *)(EXAMPLE_FLEXSPI_AMBA_BASE + EXAMPLE_SECTOR * SECTOR_SIZE),            sizeof(s_nor_read_buffer));     if (memcmp(s_nor_read_buffer, s_nor_program_buffer, sizeof(s_nor_program_buffer)) != 0)     {         PRINTF("Program data -  read out data value incorrect !\r\n ");         return -1;     }     else     {         PRINTF("Program data - successfully. \r\n");     }     status = flexspi_nor_get_vendor_id(EXAMPLE_FLEXSPI, &vendorID);     if (status != kStatus_Success)     {         return status;     }     PRINTF("Vendor ID: 0x%x\r\n", vendorID);     PRINTF("Status: %d\r\n", status);     while (1)     {     } } Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB Hello, Thank you for testing, then most likely is that LUT sequence is not correct when READ ID is performed, please try the following change in the LUT: /* Read ID */ [4 * NOR_CMD_LUT_SEQ_IDX_READID] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x9E, kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 0x04), Please try it and let me know of the results. Best regards/Saludos, Aldo. Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB Yes, I added this code as you suggested: unfortunately nothing has changed, as you can see: @AldoG do you have other ideas? Thanks, Bob Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB Hello, Everything looks good on hw, could you try to add function to read vendor ID after data is programed? Best regards/Saludos, Aldo. Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB Hello Aldo, thanks for the resoponse. These are the connections Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB Hello, This could be caused due to not handling reset signals correctly on the SPI memory, could you share how are you connecting the memory? If you could share an small schematic it would be really helpful. Best regards/Saludos, Aldo.
記事全体を表示
IMX93QSB の Flexspi_nor_polling_transfer SDKs の例におけるベンダー ID の問題 こんにちは、みんな、 imx93-qsb に似たカスタム ボードのペリフェラルをテストするために、VSCode 用の MCUXpresso を使用しています。SDK プロジェクト「flexspi_nor_polling_transfer」から始めて、例で使用されているチップMT25QU512ABB と非常によく似た NOR フラッシュ MT25QU01GBBB8E12 の機能をテストしたいと思います。 関数flexspi_nor_get_vendor_idでは0x20 ではなく 0xFF が返され、最後の操作は正常に完了します。         例と同じ SPI ペリフェラル (SD3 パッドの flexSPI1) を使用していますが、ID ベンダーを正しく読み取れない理由がわかりません。誰か助けてくれませんか? Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB ちなみに、拡張 SPI モードで IS25WX256 を使用する場合、Read ID コマンド 0x9E でも問題が発生します。コマンドは `FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x9e, kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 4),` です。使用するたびに `0x888cadce` を読み取ります。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは@AldoG 、 vendorID 値で何が起こっているかを理解するために、flexspi_nor_get_vendor_id 関数内に PRINTF コマンドをいくつか配置してみました。 出力は次のようになります。 また、flashXfer.seqIndex を 4 * NOR_CMD_LUT_SEQ_IDX_READID に変更してみましたが、出力は次のように変わりました。 関数内を何度も確認することが役に立つかどうかはわかりません。おそらく問題は seqIndex 値自体にあります。あなたの考えを聞かせてください。 よろしくお願いいたします。 ボブ Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、 私が推奨した追加事項からわかるように、あなたはまさにその例をそのまま使用しています。 メモリが正しく機能していないというよりは、ID を取得するための LUT コマンドが正しく機能していないのではないかと思います。そのため、正しく送信されているかどうかを確認できるかどうかを言及しました。 よろしくお願いいたします。 アルド。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、 次の UUU コマンドを使用して nor-flash をターゲットとするブートローダーを配置できたため、フラッシュ メモリが正常に動作していることはほぼ確実です。 uuu.exe -b qspi imx-boot-imx93-11x11-lpddr4x-evk-sd.bin-flash_singleboot FlexSPI Serial NOR でブート構成を設定すると、ブートローダが正しく実行されていることがわかります。しかし、なぜこのプロジェクトを MCUXpresso for VScode で使用すると問題が発生するのか、まだわかりません。 ご協力いただける場合はお知らせください。iMX93 の M33 コアでも作業する必要があります。 ありがとうございます ボブ Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、 共有していただきありがとうございます。注意深く確認させていただきます。 ところで、ハードウェア上の信号を確認する方法はありますか? よろしくお願いいたします。 アルド。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、アルドさん。 助けてくれてありがとう。残念ながら、この LUT の変更は解決策ではなく、ベンダー ID では依然として 0xff が読み取られます。C コード全体を皆さんと共有します。 /* * 著作権 (c) 2016、Freescale Semiconductor, Inc. * 著作権 2016-2018 NXP * 無断転載を禁じます。 * * * SPDXライセンス識別子: BSD-3条項 */  #include "pin_mux.h"  #include "clock_config.h"  #include "board.h"  #include "fsl_debug_console.h"  #include "fsl_rgpio.h"  #include "fsl_lpi2c.h"  #include "fsl_iomuxc.h"  #include "fsl_lpi2c.c" #include "fsl_flexspi.h" #include "app.h" #include "fsl_debug_console.h" #include "fsl_cache.h" #include "pin_mux.h" #include "clock_config.h" #include "board.h" #include "fsl_common.h" /**************************************************************************************** * 定義 **********************************************************************************/ /**************************************************************************************** * プロトタイプ **********************************************************************************/ /**************************************************************************************** * 変数 **********************************************************************************/ /* プログラムデータバッファは4バイトのアラインメントにする必要があります。これにより、このメモリ領域が次のように構成されているため、バスフォールトをCAN。 MPU によるデバイス メモリ。*/ SDK_ALIGN (静的uint8_t s_nor_program_buffer [ 256 ], 4 ); 静的uint8_t s_nor_read_buffer [ 256 ]; extern status_t flexspi_nor_flash_erase_sector ( FLEXSPI_Type *ベース、 uint32_tアドレス); extern status_t flexspi_nor_flash_page_program ( FLEXSPI_Type * base 、 uint32_t dstAddr 、 const uint32_t * src ); 外部status_t flexspi_nor_get_vendor_id ( FLEXSPI_Type *ベース、 uint8_t *ベンダーID ); 外部status_t flexspi_nor_enable_quad_mode ( FLEXSPI_Type *ベース); 外部status_t flexspi_nor_erase_chip ( FLEXSPI_Type *ベース); 外部void flexspi_nor_flash_init ( FLEXSPI_Type *ベース); /**************************************************************************************** * コード **********************************************************************************/ flexspi_device_config_tデバイス構成= { . flexspiRootClk       = 12000000 , //12 MHz、ノイズあたりOK .フラッシュサイズ            = FLASH_SIZE 、 . CS間隔単位       = kFLEXSPI_CsIntervalUnit1SckCycle 、 . CS間隔           = 2 、 .CSホールド時間           = 3 、 . CSセットアップ時間          = 3 、 .データ有効時間        = 0 、 .列スペース          = 0 、 . enableWordAddress    = 0 、 . AWRSeqIndex          = 0 、 . AWRシーケンス番号         = 0 、 . ARDSeqインデックス          = NOR_CMD_LUT_SEQ_IDX_READ 、 . ARDシーケンス番号         = 1 、 . AHBWriteWaitUnit     = kFLEXSPI_AhbWriteWaitUnit2AhbCycle 、 . AHBWriteWaitInterval = 0 , }; const uint32_t customLUT [ CUSTOM_LUT_LENGTH ] = { /* 高速読み取りクアッドモード -SDR */ [ 4 * NOR_CMD_LUT_SEQ_IDX_READ + 0 ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0xEB 、 kFLEXSPI_Command_RADDR_SDR 、 kFLEXSPI_4PAD 、 0x18 )、 [ 4 * NOR_CMD_LUT_SEQ_IDX_READ + 1 ] = FLEXSPI_LUT_SEQ (         kFLEXSPI_Command_DUMMY_SDR 、 kFLEXSPI_4PAD 、 0x0A 、 kFLEXSPI_Command_READ_SDR 、 kFLEXSPI_4PAD 、 0x04 )、 /* ステータスレジスタの読み取り */ [ 4 * NOR_CMD_LUT_SEQ_IDX_READSTATUSREG ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0xB5 、 kFLEXSPI_Command_DUMMY_SDR 、 kFLEXSPI_4PAD 、 0x0 )、 [ 4 * NOR_CMD_LUT_SEQ_IDX_READSTATUSREG + 1 ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_READ_SDR 、 kFLEXSPI_4PAD 、 0x04 、 kFLEXSPI_Command_STOP 、 kFLEXSPI_1PAD 、 0x0 )、 /* ID を読み取る */ [ 4 * NOR_CMD_LUT_SEQ_IDX_READID ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR , kFLEXSPI_1PAD , 0x9E , kFLEXSPI_Command_READ_SDR , kFLEXSPI_1PAD , 0x04 ), // 0x9F から 0X9E に変更 /* 書き込み可能4パッド */ [ 4 * NOR_CMD_LUT_SEQ_IDX_WRITEENABLE_OPI ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0x06 、 kFLEXSPI_Command_STOP 、 kFLEXSPI_1PAD 、 0x00 )、 /* 書き込み許可 */ [ 4 * NOR_CMD_LUT_SEQ_IDX_WRITEENABLE ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0x06 、 kFLEXSPI_Command_STOP 、 kFLEXSPI_1PAD 、 0 )、 /* セクタ消去 */ [ 4 * NOR_CMD_LUT_SEQ_IDX_ERASESECTOR ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0x20 、 kFLEXSPI_Command_RADDR_SDR 、 kFLEXSPI_4PAD 、 0x18 )、 /* プログラム */ [ 4 * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0x32 、 kFLEXSPI_Command_RADDR_SDR 、 kFLEXSPI_4PAD 、 0x18 )、 [ 4 * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD + 1 ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_WRITE_SDR 、 kFLEXSPI_4PAD 、 0x01 、 kFLEXSPI_Command_STOP 、 kFLEXSPI_4PAD 、 0 )、 /* クアッドモードに入る */ [ 4 * NOR_CMD_LUT_SEQ_IDX_ENABLEQUAD ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_1PAD 、 0x35 、 kFLEXSPI_Command_STOP 、 kFLEXSPI_1PAD 、 0x00 )、 /* ダミー書き込み。AHB 書き込みコマンドがトリガーされたときには何もしません。*/ [ 4 * NOR_CMD_LUT_SEQ_IDX_WRITE ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_STOP 、 kFLEXSPI_1PAD 、 0x0 、 kFLEXSPI_Command_STOP 、 kFLEXSPI_1PAD 、 0x0 )、 /* Qual SDR読み取りを使用してステータスレジスタを読み取る */ [ 4 * NOR_CMD_LUT_SEQ_IDX_READSTATUS_OPI ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0x05 、 kFLEXSPI_Command_READ_SDR 、 kFLEXSPI_4PAD 、 0x02 )、 }; int main ( void ) {     uint32_t i = 0 ;     status_tステータス;     uint8_tベンダーID = 0 ;     pcal6524_handle_tハンドル; /* clang-format オフ */     const clock_root_config_t lpi2cClkCfg = { .clockOff = false 、​ . mux = 0 , // 24MHz発振器ソース . div = 1 }; /* clang-format オン */     BOARD_ConfigMPU ();     BOARD_InitBootPins ();     BOARD_BootClockRUN ();     BOARD_InitDebugConsole ();     CLOCK_SetRootClock ( BOARD_PCAL6524_I2C_CLOCK_ROOT 、 & lpi2cClkCfg );     CLOCK_EnableClock ( BOARD_PCAL6524_I2C_CLOCK_GATE ); /* M.2 nor フラッシュカードに 3.3V を設定します */     BOARD_InitPCAL6524 ( &ハンドル);     PCAL6524_SetDirection ( &ハンドル, ( 1 << BOARD_PCAL6524_EXT1_PWREN ), kPCAL6524_Output );     PCAL6524_SetPins ( &ハンドル, ( 1 << BOARD_PCAL6524_EXT1_PWREN ));     flexspi_nor_flash_init ( EXAMPLE_FLEXSPI );     PRINTF ( " \r\n FLEXSPI の例を開始しました! \r\n " ); /* ベンダーIDを取得します。 */     ステータス= flexspi_nor_get_vendor_id ( EXAMPLE_FLEXSPI 、 & vendorID );     if (ステータス!= kStatus_Success )     {         ステータスを返します。    }     PRINTF ( "ベンダーID: 0x %x \r\n " , vendorID ); #if ! (定義済み( XIP_EXTERNAL_FLASH )) /* チップ全体を消去します。*/     PRINTF ( "FlexSPI 経由でチップ全体を消去しています... \r\n " ); ステータス= flexspi_nor_erase_chip (EXAMPLE_FLEXSPI);     if (ステータス!= kStatus_Success)     {         ステータスを返します。    }     PRINTF ( "消去が完了しました! \r\n " ); #endif /* クアッドモードに入ります。*/     ステータス= flexspi_nor_enable_quad_mode ( EXAMPLE_FLEXSPI );     if (ステータス!= kStatus_Success )     {         ステータスを返します。    } /* セクタを消去します。*/     PRINTF ( "FlexSPI 経由のシリアル NOR を消去しています... \r\n " );     ステータス= flexspi_nor_flash_erase_sector ( EXAMPLE_FLEXSPI 、 EXAMPLE_SECTOR * SECTOR_SIZE );     if (ステータス!= kStatus_Success )     {         PRINTF ( "セクター消去失敗! \r\n " );         - 1を返します。    }     memset ( s_nor_program_buffer 、 0xFFU 、 sizeof ( s_nor_program_buffer ));     DCACHE_InvalidateByRange ( EXAMPLE_FLEXSPI_AMBA_BASE + EXAMPLE_SECTOR * SECTOR_SIZE 、 FLASH_PAGE_SIZE );     memcpy ( s_nor_read_buffer , ( void * )( EXAMPLE_FLEXSPI_AMBA_BASE + EXAMPLE_SECTOR * SECTOR_SIZE ),            sizeof ( s_nor_read_buffer ));     memcmp ()の場合、 s_nor_program_buffer 、 s_nor_read_buffer 、 sizeof ( )の場合、 s_nor_program_bufferは、次のようになります。     {         PRINTF ( "データを消去 - 読み取ったデータ値が正しくありません! \r\n " );         - 1を返します。    }     それ以外     {         PRINTF ( "データの消去 - 正常に完了しました。 \r\n " );    }     ( i = 0 ; i < 0xFFU ; i ++ )の場合     {         s_nor_program_buffer [ i ] = i ;    }     ステータス=         flexspi_nor_flash_page_program ( EXAMPLE_FLEXSPI 、 EXAMPLE_SECTOR * SECTOR_SIZE 、 ( void * ) s_nor_program_buffer );     if (ステータス!= kStatus_Success )     {         PRINTF ( "ページ プログラム エラー! \r\n " );         - 1を返します。    }     DCACHE_InvalidateByRange ( EXAMPLE_FLEXSPI_AMBA_BASE + EXAMPLE_SECTOR * SECTOR_SIZE 、 FLASH_PAGE_SIZE );     memcpy ( s_nor_read_buffer , ( void * )( EXAMPLE_FLEXSPI_AMBA_BASE + EXAMPLE_SECTOR * SECTOR_SIZE ),            sizeof ( s_nor_read_buffer ));     memcmp ( s_nor_read_buffer 、 s_nor_program_buffer 、 sizeof ( s_nor_program_buffer ) ) != 0の場合     {         PRINTF ( "プログラムデータ - 読み取ったデータ値が正しくありません! \r\n " );         - 1を返します。    }     それ以外     {         PRINTF ( "プログラムデータ - 正常に実行されました。 \r\n " );    }     ステータス= flexspi_nor_get_vendor_id ( EXAMPLE_FLEXSPI 、 & vendorID );     if (ステータス!= kStatus_Success )     {         ステータスを返します。    }     PRINTF ( "ベンダーID: 0x %x \r\n " , vendorID );     PRINTF ( "ステータス: %d \r\n " , status );     一方( 1 )     {    } } Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、 テストしていただきありがとうございます。READ ID の実行時に LUT シーケンスが正しくない可能性が最も高いため、LUT で次の変更を試してください。 /* ID を読み取る */ [4 * NOR_CMD_LUT_SEQ_IDX_READID] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR、kFLEXSPI_1PAD、 0x9E 、kFLEXSPI_Command_READ_SDR、kFLEXSPI_1PAD、0x04)、 ぜひお試しいただき、結果を教えてください。 よろしくお願いいたします。 アルド。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB はい、ご提案どおりに次のコードを追加しました: 残念ながら、CANのとおり何も変わっていません。 @AldoG他にアイデアはありますか? ありがとうございます ボブ Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、 ハードウェアはすべて正常に見えますが、データがプログラムされた後にベンダー ID を読み取る機能を追加していただけますか? よろしくお願いいたします。 アルド。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、アルドさん。 ご返信ありがとうございます。これらは接続です Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、 これは、SPI メモリ上でリセット信号が正しく処理されていないことが原因で発生する可能性があります。メモリをどのように接続しているか教えていただけますか? 小さな回路図を共有していただければ、本当に助かります。 よろしくお願いいたします。 アルド。
記事全体を表示
AIは人間の知能とどう違うのでしょうか? Brolly Academy は、学生に貴重なスキルと 100% の就職支援を提供することを目的とした、幅広いトレンドの IT コースを提供しています。 Brollyアカデミーで学べる、人気のITコース50選をご紹介します。 ハイデラバードで最高のgenerateaiトレーニングを提供しています Re: How does AI differ from human intelligence? 興味深い議論ですね!AI の強みは大量のデータを迅速にプロセッシングすることにあり、人間の知能は直感、感情、状況理解を加えます。どちらも独自の機能を備えており、それらを組み合わせることで、最も効果的なソリューションが得られる場合が多くあります。探求する価値のある素晴らしいトピックです! https://vignesh156.aiskills.in/   Re: How does AI differ from human intelligence? 「洞察力に富んだ議論!AI はデータプロセッシングとパターン認識に優れていますが、創造性、共感、倫理的判断においては依然として人間の知能が優位です。両方の強みを組み合わせることで、真の力が発揮されます。」       Re: How does AI differ from human intelligence? テクノロジーのFUTUREをマスターするための信頼できるパートナー、Brollyai へようこそ。2021 年に設立された Brollyai は、意欲的な技術愛好家と急速に進化するAIの世界との間のギャップを埋めるというビジョンから生まれました。私たちは、AI の最先端分野における最高レベルの教育と実践形式のトレーニングを提供することに専念しています。 当社のチームは業界で合計 15 年の経験を持ち、豊富な知識を誇ります。当校の経験豊富な教授陣は、最新のテクノロジの進歩に対する深い理解を持ち、学生が最高の品質の教育とトレーニングを受けられるよう保証します。 私たちが提供するもの Brollyai では、次の分野に特化しています。 生成AI: 画像生成から高度な自然言語プロセッシングまで、クリエイティブな AI アプリケーションの世界に飛び込んでみましょう。 プロンプトエンジニアリング: AI モデルの潜在能力を最大限に活用するための効果的なプロンプトを設計する技術と科学を学びます。 機械学習: 基本的な概念から高度なアルゴリズムまで、機械学習技術を包括的に理解します。ハイデラバードで最高のgenerateaiトレーニングを提供しています Re: How does AI differ from human intelligence? 速度とプロセッシング能力 – AI は膨大なデータセットを数秒で分析できますが、人間の場合ははるかに長い時間がかかります。 パターン認識– AI は、人間が認識するには複雑すぎる可能性のあるデータ内のパターンを検出することに優れています。 意思決定– 人間は推論と直感を使用しますが、AI はアルゴリズムと統計モデルに依存します。 適応性– AI はデータが増えるほど向上します (機械学習)。しかし、人間は新しい問題に創造性とコンテキストを適用CANます。 エラー処理– AI は人的エラーを削減CANますが、人間がより適切に解釈できる曖昧または不完全なデータを処理するのに苦労する可能性があります。 データ分析ではAIが効率性を高めるが、戦略的思考と意思決定には人間の知性が不可欠である。 Re: How does AI differ from human intelligence? AIと人間の知能は全く違います!人間は経験と感情から学び、創造性と直感を生み出します。対照的に、AI はデータとアルゴリズムに依存しているため、特定のタスクには優れていますが、新しい状況では柔軟性が低くなります。人間は複雑な社会力学を理解し、自己認識を持つCANが、AI は真に理解したり感じたりすることはできません。ハイデラバードのpromptエンジニアリングコース
記事全体を表示
验证 MBDT 安装时,OpenToolbox_Callback 中出现错误 在 MATLAB R2024b 上使用 S32K3 恩智浦支持代码包 (v1.6.0) 中的 " Ver ify MBD 工具箱安装 " 按钮时遇到了错误。 下面是错误跟踪: >> NXP_Support_Package_S32K3 Error using contains First argument must be text. Error in NXP_Support_Package_S32K3/OpenToolbox_Callback (line 250) result(i) = contains(toolboxes(i).Name, 'NXP_MBDToolbox_S32K3'); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in appdesigner.internal.service.AppManagementService/executeCallback (line 165) callback(appOrUserComponent, event); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.apps.AppBase>@(source,event)executeCallback(ams,app,callback,requiresEventData,event) (line 60) newCallback = @(source, event)executeCallback(ams, ... ^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.ui.internal.controller.uicontrol.UicontrolRedirectStrategy/executeCallback (line 203) feval(callback{1}, src, event, callback{2:end}); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.ui.internal.controller.uicontrol.PushButtonRedirectStrategy/handleCallbackFired (line 13) executeCallback(obj, src, event); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.ui.internal.controller.uicontrol.PushButtonRedirectStrategy>@(varargin)obj.handleCallbackFired(varargin{:}) (line 19) component.ButtonPushedFcn = @obj.handleCallbackFired; ^^^^^^^^^^^^^^^^^^^^^^^ Error using appdesservices.internal.interfaces.model.AbstractModel/executeUserCallback (line 282) Error while evaluating Button PrivateButtonPushedFcn. 我手动确认了工具箱是否已安装: >> disp(matlab.addons.installedAddons) Name Version Enabled Identifier ___________________________ _______ _______ ______________________________________ "NXP_Support_Package_S32K3" "1.6.0" true "7addb8fc-087e-4490-b128-67745df27cab" "MATLAB Coder" "24.2" true "ME" "Simulink" "24.2" true "SL" "Simulink Coder" "24.2" true "RT" "NXP_MBDToolbox_S32K3" "1.6.0" true "7ac8b4ba-7b61-44b0-a91d-5925288823f8" "AUTOSAR Blockset" "24.2" true "AS" "Stateflow" "24.2" true "SF" "Embedded Coder" "24.2" true "EC" Re: Error in OpenToolbox_Callback When Verifying MBDT Installation 你好,@as2025、@Akil_Visai、@yr1205、@AlexCloutierDyname、 我们最近发布了该工具箱的新版本(适用于 S32K3 版本的基于模型的设计工具箱 1.7.0)。你可以升级到这个版本并尝试使用支持软件包安装程序重新安装工具箱。再次请注意,也可以在不使用支持代码包实用程序的情况下安装该工具箱,只需拖放 .mltbx 即可锉刀通过这种方法,您可以使用工具箱,而不会遇到之前遇到的验证问题。 请与我们联系进展情况。 顺祝商祺! 德拉古 Re: Error in OpenToolbox_Callback When Verifying MBDT Installation 出现此错误的原因是安装路径较长。在 MATLAB 主页的设置->Add-ons,选择较短的安装路径。 注意:在重新安装附加组件之前。转到默认插件文件夹,删除恩智浦s32k3xx或s32k1xx支持代码包文件夹,否则你可能会遇到另一个错误,指出删除恩智浦代码包的先前版本。因此,您可能无法验证安装和激活许可证 Re: Error in OpenToolbox_Callback When Verifying MBDT Installation 使用更短的安装路径。在 MATLAB 主页的设置->Add-ons,选择较小的安装路径。我也遇到了同样的问题,现在已经解决了。目前我使用的是 MATLAB 2025a 版本 注意:在此之前,请卸载 nxp 附加组件,并转到默认的 matlab 工具箱文件夹,删除 s32k3xx 或 s32k1xx 的 nxp 支持文件夹,然后选择新的较短位置进行安装(这些操作应手动完成),否则在安装时会收到卸载或删除先前安装的 nxp 工具箱的提示信息 Re: Error in OpenToolbox_Callback When Verifying MBDT Installation 遇到了同样的问题,仍然无法安装工具箱。 我试着更改回调函数,得到的错误信息显示路径上未找到工具箱,但实际上它在提到的路径上是可用的。 Re: Error in OpenToolbox_Callback When Verifying MBDT Installation 您好, 有什么解决方法吗?我尝试安装 1.6.0 版本几次,我都无法解决这个问题 此致, yr1205 Re: Error in OpenToolbox_Callback When Verifying MBDT Installation 你好,@as2025、 我在使用 1.5.0 版本时也遇到了同样的问题。 在 NXP_Support_Package_S32K3xx.m 中,替换这些行 : result(i) = contains(toolboxes(i).Name, 'NXP_MBDToolbox_S32K3xx');   用: if isempty(toolboxes(i).Name) else result(i) = contains(toolboxes(i).Name, 'NXP_MBDToolbox_S32K3xx'); end   在我的案例中,工具箱变量中似乎有一个空成员,这导致了错误。 您的工具箱列表似乎也有这种情况(注意列表中第一个工具箱前的空白处)。 您需要在.m.中进行三次替换。 希望这能帮到您, 亚历克斯   Re: Error in OpenToolbox_Callback When Verifying MBDT Installation @dragostoma我在尝试激活恩智浦 MBD 工具箱时也遇到了类似的问题: Error using contains First argument must be text. Error in NXP_Support_Package_S32K3/ActivateLicense_Callback (line 320) result(i) = contains(toolboxes(i).Name, 'NXP_MBDToolbox_S32K3'); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in appdesigner.internal.service.AppManagementService/executeCallback (line 165) callback(appOrUserComponent, event); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.apps.AppBase>@(source,event)executeCallback(ams,app,callback,requiresEventData,event) (line 60) newCallback = @(source, event)executeCallback(ams, ... ^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.ui.internal.controller.uicontrol.UicontrolRedirectStrategy/executeCallback (line 203) feval(callback{1}, src, event, callback{2:end}); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.ui.internal.controller.uicontrol.PushButtonRedirectStrategy/handleCallbackFired (line 13) executeCallback(obj, src, event); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.ui.internal.controller.uicontrol.PushButtonRedirectStrategy>@(varargin)obj.handleCallbackFired(varargin{:}) (line 19) component.ButtonPushedFcn = @obj.handleCallbackFired; ^^^^^^^^^^^^^^^^^^^^^^^ Error using appdesservices.internal.interfaces.model.AbstractModel/executeUserCallback (line 282) Error while evaluating Button PrivateButtonPushedFcn. >> 因此,在验证 MBDT 许可证时会出现错误: 由于问题似乎与工具箱的激活有关,我还没有尝试实际使用工具箱。我可以试一试,然后向您汇报。 谢谢! Re: Error in OpenToolbox_Callback When Verifying MBDT Installation 你好,@as2025、 感谢您对 S32K3 基于模型的设计工具箱的关注。 除了在工具箱安装验证过程中出现的错误外,您是否尝试过激活许可证并使用工具箱?我们将尝试重现您遇到的问题,但请尝试使用工具箱本身,看看是否存在任何问题,或者是否只是安装验证不正确。 与我们联系进展情况, 德拉古
記事全体を表示
XGATEの質問 MC9S12XEP100。絶対アセンブラでコーディングしながら、XGATE を使用していくつかのコード実験を行いたいと思います。Code Warrior 5.9.0 Special Edition Build 5294 を使用してもこれは可能ですか? よろしくお願いいたします。 ロバート・ヒーバート Re: XGATE Question こんにちは、ファストさん。 ああ、あなたから連絡をもらえて本当に嬉しいです!! XEP100 をアセンブラでプログラミングするこの世界では、特に XGATE を混ぜると、かなり孤独を感じます。XEP100 は私が望むことすべて、そしてそれ以上のことを CAN します。私は「C」を話せませんが、絶対アセンブラが本当に好きです。私が relocatable を試している唯一の理由は、今のところそれが XGATE を動作させる唯一の方法だからです。 私は自分の目標を達成する方法のヒントを得るために、マニュアルや見つけられる限りのアプリケーションノートを研究するのに多くの時間を費やしてきました。行き詰まると非常にイライラしますが、何かがうまくいくととてもやりがいを感じます。それはほぼフルタイムの仕事です。 お時間を見つけて、私を正しい方向に導いていただけると嬉しいです。私のプロジェクトを皆さんと共有できればと思っています。かなり長くなりそうSO、もしよければフォーラム外でこれを続けて、良い結果が出たら他の人が使えるように投稿することもできます。 コミュニケーションを確立できるように、個人的にメッセージを送信してみます。 ご興味を持っていただきSOありがとうございます。 よろしくお願いいたします。 ロバート Re: XGATE Question 私はXGATEアセンブラのみで書いています。たぶん私は助けることができるでしょう。私はそれが大好きなんです。コードを移動する理由が不明です。サブルーチンがない理由はないので、アセンブラで 32K を埋めることはほとんどありません。コード戦士はタスクに適さない可能性があります。良い.asmを見せてくださいファイル。私は 6502 と 8080 で経験を積みましたが、7 つのレジスタは贅沢です。 Re: XGATE Question まあ、私の最善の努力にもかかわらず、絶対アセンブラで XGATE コードを書くことはできませんでした。ただし、再配置可能なアセンブラでコードを書く作業が少し進んだので、添付します。 次のステップは、絶対アセンブラで記述したコードをいくつか取得し、それを再配置可能に変換して、それに XGATE を追加することです。今のところ、それほど進んではいませんが、少なくとも動作する XGATE コードがいくつかできました。 助けてくれたLadislavに感謝します。 よろしくお願いいたします。 ロバート Re: XGATE Question こんにちは、ラディスラフさん。 それは大きな作品であり、「C」で書かれているため、私にはまったく理解できません。 AN 2734、HCS12X ファミリのメモリ構成は持っていますが、そこに XGATE についての記載はありません。もちろん、MC9S12XEP100RMV1 02/20/13 には XGATE メモリ マップが含まれています。両方をもう少し勉強して、物事がもっと明確になるかどうか確認してみます。 可能であれば、このThreadで以前に私が尋ねた質問(7/21/25)に戻ってもいいでしょうか。10.9.2 のリファレンス マニュアルに、コード例 (SCI で「Hello World!」を送信する) があることに気付きました。これは、絶対アセンブラで XGATE を利用するコードを記述できることを示しています。しかし、Code Warrior でコードを実行しようとすると、コードが失敗し、「CPU S12X」は hc12 命令ではないというメッセージが表示されます。 このコードを実行するには何をすればよいですか? よろしくお願いいたします。 ロバート Re: XGATE Question こんにちは、 昔、私はあなたに記憶マップを送りました。これで、どのコアがどのアドレス指定モードを使用し、どのようにデータとコードにアクセスするかを理解できたはずです。 CPU は PPAGE_OFFSET で実行されますが、アクセスを簡素化するために、通常、データは GPAGE_offset を使用して読み書きされます。 XGATE はフラッシュまたは RAM のいずれからも実行CAN。RAM から CAN 実行する前に、フラッシュから対応するメモリ空間にコピーする必要があります。XGATE をフラッシュから実行したい場合は、プロジェクトの作成時にこれを設定する必要があります。そうすればコピーは不要になります。 私が提案するのは、常に正しいメモリ配置によって各モジュールにコードを導入することです… 例えば #pragma CODE_SEG デフォルト #pragma DATA_SEG デフォルト #プラグマ CODE_SEG XGATE_CODE_FLASH #pragma DATA_SEG SHARED_DATA #プラグマ DATA_SEG XGATE_DATA コピー プロセス (使用されている場合 - 確認しません) では、グローバル メモリ空間に簡単にアクセスできるように GLD/GST 命令を使用することをお勧めします。メモリ マップに示されているように、16 ビット アドレス指定を使用したデータにアクセスできるのは RAM の一部のみです (CPU の観点から)。16 ビット アドレス指定では表示されない RAM の部分に書き込むには、GPAGE または RPAGE アドレス指定モードを使用する必要があります。ただし、XGATE が実行中の場合、16 ビット アドレス指定を使用して RAM 全体を認識します。 もちろん、コードがフラッシュから実行される場合でも、CPU と XGATE の両方の変数を初期化する copyToRam 関数が存在するCAN。 動作をよりよく理解するために、テストには常にシミュレータまたはデバッガーを使用することを強くお勧めします。メモリ ウィンドウ内の異なるアドレス (つまり、同じアドレス空間内にあるが、異なるアドレス指定モードを使用しているアドレス) をテストして、それら全体で同じコンテンツが表示されるかどうかを確認することが重要です。 実を言うと、私は現在 XDT512 で趣味のプロジェクトを作成しており、すべてが期待どおりの場所にあり、結果が期待どおりであるかどうかを確認するために、多くのデバッグを行う必要があります。警告も読むことが重要です。私はCPUからSWIでそれらを呼び出すためにxgateにディスプレイ関数を配置しました。間違いを避けるために、私は常に整数を変数として使用します (char は適切な変数ではないため、xgate では配列や構造体で問題が発生する可能性があります)。ポインターの変換関数も作成する必要がありました。これは、conversion.c でCAN確認できます。また、CPUからxgateに渡す入力パラメータを初期化するための特別なアプローチを使用しました。たとえば、LCDcSetup(….)を参照してください。私は CPU を呼び出し、データ セットがモジュール lcd_comman_wrappers.c で準備された後、void LCDxSetup(tUI setup) によって使用される特定の構造体を入力し、データの準備後に SWI によって xgate が起動されます。もちろん、ある程度の共有データが用意され、異なるアプローチが使用される可能性もありますが、これは私が CPU から xgate 関数にパラメータを渡すために使用した方法です。 皆さんを混乱させたり怖がらせたりしたいわけではありません。組み合わせと期待が多ければ多いほど、解決すべき問題と複雑なタスクが増えるということを言いたいだけです。最初の努力の後は、すべてがより簡単かつ明確になります。すべては簡単にも複雑にもCAN。私はCPU用のLCDモジュールを持っていて、それをできるだけ簡単にxgateに組み込みたいと考え、このソリューションを使用しました。XGATE は小規模で高速なタスクに使用することを目的としているため、役に立たないとCAN考えられます。このCASE、私は長時間のデータ送信タスクから CPU を解放したいと考えました。 現在、いくつかバグがありますが、段階的に進めており、これも皆さんに提案します。 S12X デバイスは非常にシンプルなので、コンパイラによって生成されたすべてのファイルを完全に削除し、コードの最初の命令としてスタックをロードするだけで、すべてを制御できます。 よろしくお願いいたします。 ラディスラフ Re: XGATE Question こんにちは、ラディスラフさん。 ここのところ仕事が忙しすぎてプロジェクトに多くの時間を費やすことができませんでしたが、ようやくプロジェクトに戻ることができました。あなたが送ってくれたコード、私自身、そして Code Warrior で作成できる例を研究してきました。本質的には、RAM に XGATE が追加された再配置可能なアセンブラの Fibo 計算プログラムです。 私はそれがどのように機能するかをかなりよく理解しているつもりですが、1つ疑問に思うことがあります。 コードをステップ実行してレジスタとメモリを追跡すると、「CopyToRam」マクロがあまり意味をなさないことがわかります。PPAGE は $FE、GPAGE は $7F、RPAGE は $F8 です。 フラッシュ内の XGATE コードは論理アドレス $7F8000 から始まり、論理アドレス $F81100 の RAM にコピーされると予想しました。しかし、実際には、XGATE コードは論理アドレス $FE8000 から始まり、予想される RAM アドレスに非常にうまくコピーされます。 ここで何が見逃されているのでしょうか? よろしくお願いいたします。 ロバート Re: XGATE Question こんにちは、 a) クリーニングされたプロジェクトは元の場所に取り付けられます。古いものは削除されました。機能面では問題はありませんでしたが、古いバージョンでもいくつか誤って追加されたものがありました。 今なら大丈夫のはずです。 b) ポインターが空のウィンドウ上にあるときにマウスの右ボタンを押し、ソース ファイルを開いて xgate.dbg を選択し、PIT0_Handler にブレーク ポイントを設定します。 実行後にxgateで停止することがわかります CPUも同様 よろしくお願いいたします。 ラディスラフ Re: XGATE Question こんにちは、ラディスラフさん。 .asmを実行できましたUSBDM にスイッチするとボード上のコードが機能しなくなりますが、次のメッセージが表示されます。これらはプログラムの作成や実行を妨げるものではありません。 ************* プロジェクト「XP100-PIT_XGATE_SEMAPHORES-ASM-C52.mcp」のターゲット「standard」内の次のアクセスパス見つかりません: (プロジェクト)..\XP100-PIT_XGATE_SEMAPHORES-ASM-C51 ターゲット「Standard」に「XP100-PIT_XGATE_SEMAPHORES-ASM-C51.mcp」が見つかりませんでした ******** source1 ウィンドウでブレークポイントを設定し、ソース コードをステップ実行できます。ブレークポイントを設定して XGATE コードをステップ実行したいのですが、source2 ウィンドウに表示されません。これを実行するために欠けている設定はありますか? よろしくお願いいたします。 ロバート Re: XGATE Question こんにちは、ラディスラフさん。 あなたの助力にとても感謝しています、ありがとう。できれば「C」でコーディングしたいのですが、その言語を話せません。自分で学ぼうとしましたが、私には難しすぎます。デバッガでレジスタやメモリを観察CANのでアセンブラが好きです。それは私には意味が分かります。私のプログラムはそれほど大きくなく、作成しているのは私だけです。そのため、私は絶対アセンブラを好みます。 とにかく、私はあなたの添付ファイルを研究し、それを使って何をCANか調べます。改めて、感謝申し上げます。 よろしくお願いいたします。 ロバート Re: XGATE Question こんにちは、 さて、私が忘れていないかどうかを確認するために、今作成した別の例(c プロジェクトに基づき、逆アセンブルして asm プロジェクトに移植)です。 …RTI ではなく 2 つの PIT によって期間が生成されます。1 つは CPU (PIT1) に、もう 1 つは XGATE (PIT0) にあります。どちらのモジュールも、PIT 割り込みで変更される共有 8 ビット変数 XGATE_diodes を使用し、この変数へのアクセスはセマフォによって制御されます。 それはすべてを示しています。また、異なるアドレス指定スタイルも使用しました。1 回はレジスタ定義で、もう 1 回は直接数値で使用しました。これは単なる例です。 私が何度も表明したように...このCASE、私は xgate で asm プログラミングを使用しません。C コーディングの方がはるかに簡単で、これにより、発生する可能性のある多くの問題も自動的に解決されます。 ASM と C の両方のプロジェクトが添付されています。 よろしくお願いいたします。 ラディスラフ Re: XGATE Question こんにちは、ラディスラフさん。 私は数日かけてコードを詳細に研究し、ステップ実行して、各ステップで関連するレジスタと変数の状態を記録しました。変数 XGATE_Counter はアドレス $2100:2101 にあり、変数 Counter はアドレス $2102:2103 にあり、変数 FiboRes はアドレス $2104:2105 にあることがわかりました。 あなたの指示に従って XGATE コードをステップ実行し、RAM メモリを監視しました。そのとき、私はこのコードがどのように動作するのかを完全に理解していなかったことに気づきました。カウンターの更新には XGATE が使用されていると想定していましたが、そうではないようです。これは XGATE_Counter を増分するだけであり、フィボナッチ数列の計算とはまったく関係ありません。 これが正しいと仮定すると、これはかなりの学習経験となっていますが、XGATE をどのように使用すればよいのかまだわかりません。 まず、RTI を使用して短いルーチンでこれを使用し、いくつかの時間レートを確立し、いくつかのフラグを設定して、プログラムがメイン ループでさまざまなルーチンに使用できるようにしたいと思います。この目標に近づくのに役立つサンプル コードはありますか? ありがとうございます よろしくお願いいたします。 ロバート Re: XGATE Question こんにちは、 SWIは例の中でのみ有効になっている、SOブレークポイントを設定することをお勧めします。 そして、XGATE ウィンドウ (画像では濃い青色) を選択し、実行を押します。割り込みが終了し、割り込みマシンに渡されるたびに、保留中の割り込みとして評価され、SO再度起動されます。 …。すべての変更を確認できる …数ステップ後…。 異なるアプローチの小さな例を示すだけです…現在、LCDドライバをXGATEに移行する作業 (趣味のアクティビティ) をCで行っています。SWトリガーを使用して、次のようにLCDのサービス ルーチンを起動します…たとえば… 私には定義があります。 #define SET_SW_TRIG_LCD XGSWT=(0x0101 << SWI_LCD) // SWI_LCDは0です…SWI_0が選択されています #define REL_SW_TRIG_LCD XGSWT=(0x0100 << SWI_LCD) それからHD44780.cがあります共有データを準備し、SWI によって LCD サービス ルーチンを起動します。 tUC LCDcOutTextLC(tUC 行, tUC 列, tSC *文字列) { LCD_IS_BUSYの場合、C_LCD_IS_BUSYを返します。 xgateCmdBlock.func_id = LCD_OUT_TEXT_LC; xgateCmdBlock.params.lineColText.line = 行; xgateCmdBlock.params.lineColText.col = col; xgateCmdBlock.params.lineColText.str = str; SET_SW_TRIG_LCD; <<<<<<<<<<<<<<<<< ここでLCDサービスを開始します } …そして、xgate.cxgate でそれを解放して次のアクションに備えます…。XGSWT値はLCDビジーのフラグとしても使用される。 割り込み void SoftwareTrigger0_Handler(void) { LCDxコマンド実行(); REL_SW_TRIG_LCD; // SWトリガー0を解放する } コードは次のように変換されます… ( XGSWT = (0x0100 << 0) ; ) 12: REL_SW_TRIG_LCD; // SWトリガー0を解放する 0008 f200 LDL R2,#0 000a aa01 ORH R2、#1 000c f300 LDL R3,#%XGATE_8(_XGSWT) 000e ab00 ORH R3,#%XGATE_8_H(_XGSWT) 0010 5a60 STW R2,(R3,#0) よろしくお願いいたします。 ラディスラフ Re: XGATE Question これでは、あまり先に進めません。ご提案どおり、再配置可能なアセンブラと XGATE を使用して新しいサンプル プロジェクトを作成しました。実行して再度停止すると、カウンターとフィボナッチの結果が更新されていることがわかります。停止すると、XGATE R1、R2、R7、PC、MCTL、CHIP、および VBR が変更されたか、少なくとも一部が変更されたことがわかります。 main.asm コードをステップ実行すると、コードに沿って進み、数値とレジスタが更新されるのを確認できますが、XGATE コードが実行される場所はわかりません。 XGATE コードは、ソフトウェア割り込みがトリガーされたときにカウンターを更新するだけのように見えますが、XGATE のソフトウェア割り込みを開始するものが何なのかわかりません。 Re: XGATE Question こんにちは、ラディスラフさん。 はい、試してみましたが、成功しませんでした。おそらく、一度に転送するコードが多すぎたのでしょう。もう一度ゆっくりやってみます。ありがとう。 よろしくお願いいたします。 ロバート Re: XGATE Question こんにちは、 sw トリガーの例を使用してデフォルトの構造を作成する新しいプロジェクトを作成しようとしましたか。また、共有変数のプロセッシング(セマフォではない)についても説明します。これを入手したら、コードを使用して拡張 CAN。ただし、段階的に進んですべてを確認することをお勧めします。 よろしくお願いいたします。 ラディスラフ Re: XGATE Question こんにちは、ラディスラフさん。 私は XGATE アセンブラ マニュアル .PDF を勉強しており、あなたが示した場所を見つけましたが、そこに書かれている説明が私にはよく分かりません。 MC9S12XEP100RMV1 のマニュアルを(何度も)読んでいると、S12X CPU と XGATE のコードを絶対アセンブラで記述することが可能だということが分かる記述を見つけました。これはマニュアルのセクション 10.9.2 にあり、「コード例 (SCI で「Hello World」を送信)」というタイトルが付けられています。 しかし、Code Warrior で実行しようとすると、すぐに動作が停止してしまいました。最初のエラーは、「CPU S12X」が hc12 命令またはディレクティブではなかったことです。 このプログラムを実行するには何をすればよいですか? Re: XGATE Question ありがとう、ラディスラフ。そこで答えが見つかるCANかどうか見てみましょう。 よろしくお願いいたします。 ロバート Re: XGATE Question こんにちは、 特に XGATE を使用して絶対アセンブリに取り組んでいる人を私は知りません。マルチコア (CPU + XGATE) で再配置可能なアセンブリ プロジェクトを作成する可能性があります。 一部の情報は、CW のインストール フォルダー (ファイル Assembler_XGATE.pdf) にあります。たとえば、私の PC では... c:\Program Files (x86)\Freescale\CWS12v5.2\Help\pdf\ よろしくお願いいたします。 ラディスラフ
記事全体を表示
MBDT のインストールを確認するときに OpenToolbox_Callback でエラーが発生しました MATLAB R2024b 上の S32K3 用 NXP サポート パッケージ (v1.6.0) の「MBD ツールボックスのインストールの確認」ボタンを使用すると、エラーが発生します。 エラー トレースは次のとおりです。 >> NXP_Support_Package_S32K3 Error using contains First argument must be text. Error in NXP_Support_Package_S32K3/OpenToolbox_Callback (line 250) result(i) = contains(toolboxes(i).Name, 'NXP_MBDToolbox_S32K3'); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in appdesigner.internal.service.AppManagementService/executeCallback (line 165) callback(appOrUserComponent, event); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.apps.AppBase>@(source,event)executeCallback(ams,app,callback,requiresEventData,event) (line 60) newCallback = @(source, event)executeCallback(ams, ... ^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.ui.internal.controller.uicontrol.UicontrolRedirectStrategy/executeCallback (line 203) feval(callback{1}, src, event, callback{2:end}); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.ui.internal.controller.uicontrol.PushButtonRedirectStrategy/handleCallbackFired (line 13) executeCallback(obj, src, event); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.ui.internal.controller.uicontrol.PushButtonRedirectStrategy>@(varargin)obj.handleCallbackFired(varargin{:}) (line 19) component.ButtonPushedFcn = @obj.handleCallbackFired; ^^^^^^^^^^^^^^^^^^^^^^^ Error using appdesservices.internal.interfaces.model.AbstractModel/executeUserCallback (line 282) Error while evaluating Button PrivateButtonPushedFcn. ツールボックスがインストールされているかどうかを手動で確認しました。 >> disp(matlab.addons.installedAddons) Name Version Enabled Identifier ___________________________ _______ _______ ______________________________________ "NXP_Support_Package_S32K3" "1.6.0" true "7addb8fc-087e-4490-b128-67745df27cab" "MATLAB Coder" "24.2" true "ME" "Simulink" "24.2" true "SL" "Simulink Coder" "24.2" true "RT" "NXP_MBDToolbox_S32K3" "1.6.0" true "7ac8b4ba-7b61-44b0-a91d-5925288823f8" "AUTOSAR Blockset" "24.2" true "AS" "Stateflow" "24.2" true "SF" "Embedded Coder" "24.2" true "EC" Re: Error in OpenToolbox_Callback When Verifying MBDT Installation こんにちは、 @as2025 、 @Akil_Visai 、 @yr1205 、 @AlexCloutierDyname 、 最近、ツールボックスの新しいバージョン ( Model-Based デザイン Toolbox for S32K3 バージョン 1.7.0 ) をリリースしました。このバージョンにアップグレードし、サポート パッケージ インストーラーを使用してツールボックスを再インストールしてみてください。ツールボックスはサポートパッケージユーティリティを使用せずに、.mltbxファイルをドラッグアンドドロップするだけでインストールできることに再度注意してください。ファイル。この方法を使用すると、以前に発生した検証の問題が発生することなくツールボックスを使用できます。 進捗状況をお知らせください。 よろしくお願いいたします。 ドラゴス Re: Error in OpenToolbox_Callback When Verifying MBDT Installation このエラーはインストール パスが長いために発生します。MATLAB ホームページで設定 -> アドオンに移動し、より短いインストール パスを選択します。 注意: アドオンを再インストールする前に。デフォルトのアドオン フォルダーに移動し、nxp s32k3xx または s32k1xx サポート パッケージ フォルダーを削除します。そうしないと、以前のバージョンの nxp パッケージを削除するという別のエラーが発生する可能性があります。そのため、インストールの確認やライセンスの有効化ができない場合があります。 Re: Error in OpenToolbox_Callback When Verifying MBDT Installation より短いインストール パスを使用します。MATLAB ホームページで設定 -> アドオンに移動し、インストール用の小さいパスを選択します。私も同じ問題を抱えていましたが、今は解決しました。現在MATLAB 2025aバージョンを使用しています 注: これを実行する前に、nxp アドオンをアンインストールし、デフォルトの matlab ツールボックス フォルダに移動して、s32k3xx または s32k1xx の nxp サポート フォルダを削除し、インストール用に新しい短い場所を選択します (これらの作業は手動で行う必要があります)。そうしないと、インストール中に、以前にインストールした nxp ツールボックスをアンインストールまたは削除するようにというメッセージが表示されます。 Re: Error in OpenToolbox_Callback When Verifying MBDT Installation 同じ問題があり、まだツールボックスをインストールできません。 コールバック関数を変更しようとしたところ、パス上にツールボックスが見つからないというエラー メッセージが表示されましたが、実際には、記載されているパスでツールボックスは利用可能です。 Re: Error in OpenToolbox_Callback When Verifying MBDT Installation こんにちは、 これを回避する方法はありますか?バージョン1.6.0をインストールしてみました数回、問題を解決できない よろしくお願いいたします。 1205年 Re: Error in OpenToolbox_Callback When Verifying MBDT Installation こんにちは@as2025さん、 1.5.0 バージョンでも同じ問題が発生しました。 NXP_Support_Package_S32K3xx.m で、次の行を置き換えます。 結果(i) = 含まれている(ツールボックス(i).名前、'NXP_MBDToolbox_S32K3xx');   と: 空の場合(ツールボックス(i).名前) そうでない場合、 結果(i) = 含まれている(ツールボックス(i).名前、'NXP_MBDToolbox_S32K3xx'); end   私のCASE、toolboxes 変数に空のメンバーがあり、それがエラーの原因だったようです。 ツールボックス リストにもこれが含まれているようです (リストの最初のツールボックスの前の空白スペースに注意してください)。 この置換を .m 内で 3 回実行する必要があります。 お役に立てば幸いです。 アレックス   Re: Error in OpenToolbox_Callback When Verifying MBDT Installation @dragostoma NXP MBD Toolbox をアクティブ化しようとすると、同様の問題が発生します。 Error using contains First argument must be text. Error in NXP_Support_Package_S32K3/ActivateLicense_Callback (line 320) result(i) = contains(toolboxes(i).Name, 'NXP_MBDToolbox_S32K3'); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in appdesigner.internal.service.AppManagementService/executeCallback (line 165) callback(appOrUserComponent, event); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.apps.AppBase>@(source,event)executeCallback(ams,app,callback,requiresEventData,event) (line 60) newCallback = @(source, event)executeCallback(ams, ... ^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.ui.internal.controller.uicontrol.UicontrolRedirectStrategy/executeCallback (line 203) feval(callback{1}, src, event, callback{2:end}); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.ui.internal.controller.uicontrol.PushButtonRedirectStrategy/handleCallbackFired (line 13) executeCallback(obj, src, event); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.ui.internal.controller.uicontrol.PushButtonRedirectStrategy>@(varargin)obj.handleCallbackFired(varargin{:}) (line 19) component.ButtonPushedFcn = @obj.handleCallbackFired; ^^^^^^^^^^^^^^^^^^^^^^^ Error using appdesservices.internal.interfaces.model.AbstractModel/executeUserCallback (line 282) Error while evaluating Button PrivateButtonPushedFcn. >> SO、MBDT ライセンスの検証でエラーが発生します。 問題はツールボックスのアクティブ化に関係しているようなので、実際にツールボックスを使用してみたことがありません。それを試してみて、結果をお知らせします。 ご回答をお待ちしています。 Re: Error in OpenToolbox_Callback When Verifying MBDT Installation こんにちは、 @as2025さん、 S32K3 向けモデルベース デザイン ツールボックスにご興味をお持ちいただきありがとうございます。 ツールボックスのインストール検証中に発生するエラー以外に、ライセンスをアクティブ化してツールボックスを使用することを試しましたか?発生した問題を再現するよう努めますが、ツールボックス自体を使用して、そこに問題があるかどうか、またはインストール検証が単に間違っているかどうかを確認してください。 進捗状況をお知らせください。 ドラゴス
記事全体を表示
i.MX 7でJTAGを無効にする <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、 i.MX 7 の JTAG を永続的に無効にする方法はありますか (たとえば、ヒューズを使用するなど)。リファレンス・マニュアルでは、第 4.12.6.4 章「SJC 無効ヒューズ」で SJC 無効ヒューズについて説明されており、第 6 章.4.3.6 章「セキュア JTAG 制御」でセキュア JTAG 制御について説明されています。ただし、第 5 章「Fusemap」にはこれらのヒューズはリストされていません (i.MX 6 には JTAG_SMODE と SJC_DISABLE がリストされていますが、i.MX 7 リファレンス マニュアルには両方とも記載されていません)... よろしくお願いいたします。 ステファン i.MX7Dual i.MX7Solo Re: Disable JTAG on i.MX 7 こんにちは、 U-BOOT 後にI.MX8MPLUSのバンク 1 ワード 3 を読み取ると、以下の値が観察されます。 JTAG が無効になっていることを意味しますか? SJC_DISABLEとJTAG_SMODEがハイに設定されているということは、 JTAG が無効になっていることを意味します。 I.MX8M ヒューズ アドレスはI.MX8MPLUS に適用できますか? ヒューズアドレス ヒューズ名 機能 設定 0x470[21] SJC_DISABLE セキュア JTAG コントローラ モジュールを無効/有効にします。このヒューズは、JTAG が完全にブロックされる最高の JTAG セキュリティ レベルを作成するために使用されます。 0 - セキュアJTAGコントローラが有効 1 - セキュアJTAGコントローラが無効 0x470[23:22] JTAG_SMODE[1:0] JTAG セキュリティ モード。JTAGデバッグインターフェースのセキュリティモードを制御します 00 - JTAG有効モード 01 - セキュアJTAGモード 1x - デバッグモードなし Re: Disable JTAG on i.MX 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ありがとう、イゴール。助かりました! 私は U-Boot ヒューズ コマンドを使用しました。BOOT_CFG0 ヒューズはバンク 1、ワード 3 を通じて利用できます。 fuse prog -y 1 3 0x200000 これにより、JTAG は利用できなくなります。
記事全体を表示
S32Z280-594EVB S32Z280-594EVB 開発ボードを購入しましたが、NXP の公式 Web サイトに掲載されているドキュメントが限られています。対応する実行可能ソフトウェアをどこからダウンロードすればよいかわかりません。また、GreenVIP をダウンロードするにはライセンスが必要ですか? Re: S32Z280-594EVB こんにちは、 @chenyin_h S32Z プラットフォームのブートストラップに DCC UART の初期化コードがあります。SO、 S32Z280-594EVB で DCC UART 出力を使用するにはどうすればよいでしょうか? JLINK を使用して DCC ログ出力を構成および表示するにはどうすればよいですか? Re: S32Z280-594EVB こんにちは、 @steven52777 ご返信ありがとうございます。 S32Z280-594の直接文書はまだ公開されていませんが、以下の文書を一時的に参照することができます。 S32DS\tools\S32FlashTool\examples\S32Z2E2\S32Z27X-DC_DC2 ご不便をおかけして申し訳ございません。 BR チェイン Re: S32Z280-594EVB こんにちは、 @chenyin_h 今、私は S32 フラッシュ ツールを使いたいのですが、"S32DS\tools\S32FlashTool\examples\S32Z2E2" フォルダーに S32Z27X のユーザー マニュアルを見つけました。S32Z280のマニュアルを送っていただけますか?問題は、S32Z280のBOOT_MODEジャンパーの設定とBOOT_CFGの選択が不明なことです。ありがとうございます。 Re: S32Z280-594EVB こんにちは、 @steven52777 ご返信ありがとうございます。 最新情報: https://www.segger.com/supported-devices/jlink/ S32Z はサポートされているデバイスのリストに含まれていません。 ご不便をおかけして申し訳ございません。 BR チェイン Re: S32Z280-594EVB では、デバッグ/フラッシュに J-Link を直接使用できますか? Re: S32Z280-594EVB こんにちは、 @steven52777 ご返信ありがとうございます。 openSDAについては、はい、ボードにOpenSDAインターフェースが含まれていますが、現在、それを使用するための公開ドキュメントはありません。 現在、ボードのデバッグ/フラッシュには Lauterbach と S32 デバッグ プローブを使用することをお勧めします。また、S32 フラッシュ ツールはボードのフラッシュにのみ使用できます。 ご不便をおかけして申し訳ございません。 BR チェイン Re: S32Z280-594EVB @chenyin_h さん、ご返信ありがとうございます。コンパイルしたファームウェアを開発ボードにロードして実行したいのですが、S32デバッグプローブを使わずにopenSDAなどの方法でプログラムをロードすることは可能でしょうか? Re: S32Z280-594EVB こんにちは、 @steven52777 ご投稿ありがとうございます。 1.ドキュメントについては、 https://www.nxp.com/products/S32Z2 にアクセスしてください。現在、参考として使用できる公開ファイルは 28 件あり、今後数日中にさらに多くの文書が公開される予定です。 2. GreenVIP にアクセスするには、まず次のパスにアクセスしてみてください。 https://www.nxp.com/app-autopackagemgr/automotive-software-package-manager:AUTO-SW-PACKAGE-MANAGER 承認を申請し、承認されるとアカウントからダウンロードできるようになります。 お役に立てれば幸いです。 BR チェイン
記事全体を表示
S32Z280-594EVB 我购买了 S32Z280-594EVB 开发板,但恩智浦官方网站上提供的文档有限。我不知道从哪里下载相应的可执行文件。另外,下载 GreenVIP 需要许可证吗? Re: S32Z280-594EVB 你好,@chenyin_h 我在 S32Z 平台的引导程序中看到了 DCC UART 的初始化代码。那么,如何在 S32Z280-594EVB 中使用 DCC UART 输出? 如何使用 JLINK 配置和查看 DCC 日志输出? Re: S32Z280-594EVB 你好,@steven52777 感谢您的回复。 S32Z280-594 的直接文档尚未版本,您可以暂时引用以下文档 S32DS\tools\S32FlashTool\examples\S32Z2E2\S32Z27X-DC_DC2 很抱歉给您带来不便。 BR 切宁 Re: S32Z280-594EVB 你好,@chenyin_h 现在,我想使用 S32 闪存工具,但我刚刚在"S32DS\tools\S32FlashTool\examples\S32Z2E2" 文件夹中找到了 S32Z27X 的用户手册。请将 S32Z280 的使用手册发给我,主要问题是我不清楚 S32Z280 的 BOOT_MODE 跳线和 BOOT_CFG 选择的配置。谢谢。 Re: S32Z280-594EVB 你好,@steven52777 感谢您的回复。 当前信息: https://www.segger.com/supported-devices/jlink/ S32Z 不包含在支持的设备列表中。 很抱歉给您带来不便。 BR 切宁 Re: S32Z280-594EVB 那么我可以直接使用 J-Link 进行调试/闪存吗? Re: S32Z280-594EVB 你好,@steven52777 感谢您的回复。 对于 OpenSDA,是的,开发板上包含一个 OpenSDA 接口,但目前没有可供使用的公开文档 目前,我们建议使用劳特巴赫和S32 Debug探针来调试/刷新板,S32闪存工具也可以仅用于刷新板。 很抱歉给您带来不便。 BR 切宁 Re: S32Z280-594EVB @chenyin_h,谢谢你的回复。如果我想将编译后的固件加载到开发板上执行,我可以在没有 S32 调试探器的情况下使用 OpenSDA 或其他方法加载程序吗? Re: S32Z280-594EVB 你好,@steven52777 谢谢您的帖子。 1.有关该文件,您可以访问https://www.nxp.com/products/S32Z2、目前,有28份公共文件可供参考,未来几天将版本更多文件。 2.要访问 GreenVIP,可首先尝试访问以下路径: https://www.nxp.com/app-autopackagemgr/automotive-software-package-manager:AUTO-SW-PACKAGE-MANAGER 然后申请批准,批准后就可以从您的账户中下载。 希望对你有所帮助。 BR 切宁
記事全体を表示
IMX8Mデバイスを完全に保護する方法 こんにちは、みんな、 現在、IMX8M デバイスを完全に保護しようとしています。SRK_HASH をプログラムし、現在は署名されたブートローダーとイメージを使用して高保証ブートを実行できます。 AN4581 には、デバイスを完全に保護するためにプログラムする必要がある次のヒューズがリストされています。 • SRK_LOCK:SRK_HASH[255:0]ヒューズのロック。 • DIR_BT_DIS: 外部メモリの直接ブートを無効にします。 • SJC_DISABLE: セキュア JTAG コントローラ モジュールを無効にします。 • JTAG_SMODE: JTAG セキュリティ モードをデバッグ モードなし 0x11 に設定します。 • JTAG_HEO: HAB JTAG の有効化を禁止します。 • BOOT_CFG_LOCK: BOOT 関連のヒューズをロックします。 SRK_LOCK、BOOT_CFG_LOCK 、 SEC_CONFIGの IMX8MDQLQRM と IMX8MDQLQSRM を読み取って、ワード、バンク、ヒューズの値を計算しました (これらが正しいかどうかお知らせください)。 SRK_ロック ヒューズプログラム 0 0 0x100 ブート_CFG_ロック ヒューズプログラム 0 0 0xC SEC_CONFIG ヒューズプログラム1 3 0x2000000 DIR_BT_DISの技術仕様では次のように規定されています。 「DIR_BT_DIS eFuseは出荷前にプログラムする必要があります セキュリティが有効な構成のデバイス。このeFuseが 吹き飛ばされなければ、システムは安全ではありません。」 SO、これをプログラムする必要はないと思います。 SJC_DISABLEとJTAG_SMODEについては、技術仕様でマッピングが見つかりませんでした。次の詳細が記載されているフォーラム投稿を見つけました。 ヒューズアドレス ヒューズ名 ビット数 ヒューズ機能 設定 使用者 0x470[21] SJC_DISABLE 1 セキュア JTAG コントローラ モジュールを無効/有効にします。このヒューズは、JTAG が完全にブロックされる最高の JTAG セキュリティ レベルを作成するために使用されます。 0 - セキュアJTAGコントローラが有効 1 - セキュアJTAGコントローラが無効 SJC 0x470[23:22] JTAG_SMODE[1:0] 2 JTAG セキュリティ モード。JTAGデバッグインターフェースのセキュリティモードを制御します 00 - JTAG有効モード 01 - セキュアJTAGモード 11 - デバッグモードなし SJC https://community.nxp.com/t5/i-MX-Processors/DIR-BT-DIS-and-others/mp/1212354 また、 JTAG_HEO についての言及も見当たりません。 デバイスを完全に保護するために、次の点を理解したいと思います。 DIR_BT_DISをプログラムする必要がありますか?もしSOなら、どのような価値観ですか? SJC_DISABLEとJTAG_SMODEの場合、上記の表に示されている値0x470[21]と0x470[23:22]は正しいですか? JTAG_HEOをプログラムする必要がありますか? SOの場合、そのヒューズ マッピングは何ですか? デバイスを完全に保護するために、追加でプログラムする必要があるものはありますか。たとえば、 FIELD_RETURN などのヒューズをプログラムする必要がありますか? どなたか、この詳細を記した関連情報または文書を送ってください。 敬具、 トム Re: How to fully secure an IMX8M device こんにちは、 I.MX8MP EVK JTAG 検出の問題。 デフォルト イメージ eMMC の起動が、putty を使用して Uboot で停止しました。 uboot後、Puttyターミナルで受信した以下のデータを読み取ります。 0x470[21] SJC_DISABLEは0x1 0x470[23:22] JTAG_SMODE[1:0][1:0] = 0x11 データシート JTAG_SMODE[1:0] = 0x11は[11 - デバッグモードなし]を意味します これらからデバッグ JTAG モードに戻るにはどうすればよいですか? どうかご指導ください Re: How to fully secure an IMX8M device こんにちは@emmanuel_madrigal 一部の情報は NDA の対象となっているため、機密サポートのチケットを発行することをお勧めします。 よろしくお願いします。 Harvey Re: How to fully secure an IMX8M device こんにちは、ハーヴェイ。 この情報も送っていただくことは可能でしょうか? よろしくお願いいたします。 エマニュエル Re: How to fully secure an IMX8M device こんにちは、 一部のヒューズ情報は公開できないため、システムメールで返信します。 よろしくお願いします。 Harvey Re: How to fully secure an IMX8M device 5日前にこの問題に関するチケットを送信しましたが、返信がありません。チケットのステータスを追跡する方法もわからないので、このコメントを投稿します。投稿内の質問の回答をメールで送っていただけますか?
記事全体を表示
在 i.MX 7 上禁用 JTAG <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好 有没有办法在i.MX 7上永久禁用JTAG(例如使用熔丝?)。参考手册在第 4.12.6.4 章 " SJC 禁用熔丝 " 中提到 SJC 禁用熔丝,在第 6.4.3.6 章中提到了安全 JTAG 控件 " 安全 JTAG 控件 "。但是,第 5 章 " Fusemap " 没有列出任何此类熔丝(i.MX 6 列出了 JTAG_SMODE 和 SJC_DISABLE,两者都在 i.MX 7 参考手册中缺失)... 顺祝商祺! Stefan i.MX7 双核 i.MX7 单核 Re: Disable JTAG on i.MX 7 您好, 当我们在 U-启动 之后读取 I.MX8MPLUS 中的库 1 字 3 时,我们会观察到以下值。 这是否意味着JTAG 已禁用? 您说 SJC_DISABLE 和 和 被设置为高电平,这意味着 JTAG 处于禁用状态。 I.MX8M 熔丝地址适用于 I.MX8MPLUS 吗? 熔丝地址 熔断器名称 功能 设置 0x470[21] SJC_DISABLE 禁用/启用安全 JTAG 控制器模块。该熔丝用于创建最高的 JTAG 网络安全级别,其中 JTAG 被完全屏蔽。 0 - 启用安全 JTAG 控制器 1 - 禁用安全 JTAG 控制器 0x470[23:22] jtag_smode[1:0] (标记模式) JTAG 网络安全模式。控制 JTAG 调试接口的 网络安全 模式 00 - 启用 JTAG 模式 01 - 安全 JTAG 模式 1x - 无调试模式 Re: Disable JTAG on i.MX 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 谢谢你,伊戈尔! 我使用了 U-Boot 熔丝 命令,其中 启动_CFG0 熔丝 可通过库 1、Word 3 获得: fuse prog -y 1 3 0x200000 这样,JTAG 就不再可用了。
記事全体を表示
qemu 能否模拟 i.MX 8M Plus? 我们没有 i.MX 8M Plus 板,所以我想问一下 qemu 能不能模拟 i.MX 8M Plus? 我想运行基于 i.MX 8M Plus。 qemu Linux 能否运行由 XTENSA编译的应用程序,如 SOF 项目? 感谢任何提供信息的人。 Re: Can qemu emulate i.MX 8M Plus ? 我解决了这个问题。QEMU 的 i.MX8MP 仿真已经创建了自己的 USB 控制器(DWC3/XHCI)。我正在使用命令-device usb-ehci,id=ehci 添加一个单独的 EHCI USB 控制器,这两个控制器是独立运行的。我连接到 EHCI 控制器的设备无法与 i.MX8MP 的实际 USB 总线通信。我移除了 EHCI 控制器,改用了主板的内置 USB 控制器,这使我能够成功地将相机连接到主板。 这是工作命令:   sudo /home/arif/src/qemu/build/qemu-system-aarch64\-M imx8mp-evk-smp 4-m 3G-显示无-串行空白-串行工作室\-内核 /HOME/ARIF/imx-qemu/buildroot-2024.11.1/output/imx-qemu/buildroot-2024.11.1/output/imx-qemu/buildroot-2024.11.1/output/imx-qemu/buildroot-2024.11.1/output/imx-qemu/buildroput/images/imx8mp-evk.dtb\-append " root=/dev/mmcblk2p2 "\-drive file=/home/arif/imx-qemu/buildroot-2024.11.1/output/images/sdcard.img,if =sd,bus=2,format=raw,id =mmcblk2\-device usb-host,bus = usb-bus.0,端口 = 1,供应商 id=0x04f2,productid=0xb729\-monitor telnet: 127.0.0. 1:4444,服务器,nowait   Re: Can qemu emulate i.MX 8M Plus ? 你好, 我正在QEMU中模拟 i.MX8MP 板,并尝试使用 USB 直通将笔记本电脑的内置摄像头连接到板。 我使用了以下命令:s udo /home/arif/src/qemu/build/qemu-system-aarch64\ -M imx8mp-evk-smp 4-m 3G-显示无-序列空值-串行 stdio\-kernel /HOME/ARIF/imx-qemu/buildroot-2024.11.1/output/images/Image/dtb /home/arif/imx-qemu/buildroot-2024.11.1/output/img/imx-dtb /home/arif/imx-qemu/buildroot t-2024.11.1/output/images/imx8mp-evk.dtb\-append " root=/dev/mmcblk2p2 "\-drive file=/home/arif/imx-qemu/buildroot-2024.11.1/output/img/imgcard.img,if=sd,bus =2,format=raw,id=mmcblk2\-usb-device usb-ehci,id=ehci-device usb-host,hostbus=1,hostaddr=3 当我检查主机上的摄像头时,我看到了 “找不到设备” 错误——这意味着 QEMU 成功捕获了设备——但是当我在 QEMU 中列出连接的 USB 设备时,摄像头根本看不见。 你知道我可能做错了什么吗?我真的很感谢您的帮助。 Re: Can qemu emulate i.MX 8M Plus ? 最后,我运行了 qemu 命令: qemu-system-aarch64 -machine virt\ -CPU cortex-a53 -smp 4 \ -m 2G \ -内核 ./Image\ -drive file=imx-image-full-imx8mpevk.qcow2,if=none,id=drive0,format=qcow2\ -设备 virtio-blk-pci,drive=drive0\ -append"root=/dev/vda2 rootwait rw console=ttyAMA0,115200" \ -netdev user,id=eth0\     -设备 virtio-net-device,netdev=eth0 \ -设备 virtio-gpu-pci\ -图 虚拟机可以成功设置。 Re: Can qemu emulate i.MX 8M Plus ? 我运行了 qemu 设置命令: qemu-system-aarch64 -machine imx8mp-evk -cpu cortex-a53 -m 2G -smp 4 -kernel ./imx-image-full-imx8mpevk/boot/启动映像\ -drive file=imx-image-full-imx8mpevk.qcow2,format=qcow2,id=disk,if=none\ -append"root=/dev/vda console=ttyAMA0" 您能帮我检查一下命令,参数 -kernel 是否正确吗? Re: Can qemu emulate i.MX 8M Plus ? 不,qemu 不支持 Xtensa。 Re: Can qemu emulate i.MX 8M Plus ? 感谢您的回复。 我能否再问一个关于 qemu + i.MX 8M Plus 的问题? 我想知道 qemu + i.MX 8M Plus 是否支持仿真 xtensa dsp 内核? 如何在 qemu + i.MX 8M Plus 下运行 xtensa 应用程序? Re: Can qemu emulate i.MX 8M Plus ? 你好 mm2021、 qemu-system-aarch64 二进制支持所有 32 位 CPU 和板,就像 qemu-system-x86_64 允许你运行 32 位 x86 CPU 客户机一样,这就是清单这么长而且满是 32 位板的原因。你不能只尝试使用带有-cpu cortex-a53 的 32 位板,因为是 64 位。 此致
記事全体を表示
Can qemu emulate i.MX 8M Plus ? We do not have i.MX 8M Plus board, so I'd like to ask if qemu can emulate i.MX 8M Plus? I'd like to run qemu Linux based on i.MX 8M Plus. Can the qemu Linux run applications compiled by XTENSA, like the SOF project? Thank anyone who can give any information. Re: Can qemu emulate i.MX 8M Plus ? I solved the issue. QEMU’s i.MX8MP emulation already creates its own USB controllers (DWC3/XHCI). I was adding a separate EHCI USB controller using the command -device usb-ehci,id=ehci, and these two controllers were working independently. The device I attached to the EHCI controller couldn’t communicate with the i.MX8MP’s actual USB bus. I removed the EHCI controller and instead used the board’s built-in USB controller, and that allowed me to successfully connect the camera to the board. Here’s the working command:   sudo /home/arif/src/qemu/build/qemu-system-aarch64 \ -M imx8mp-evk -smp 4 -m 3G -display none -serial null -serial stdio \ -kernel /home/arif/imx-qemu/buildroot-2024.11.1/output/images/Image \ -dtb /home/arif/imx-qemu/buildroot-2024.11.1/output/images/imx8mp-evk.dtb \ -append "root=/dev/mmcblk2p2" \ -drive file=/home/arif/imx-qemu/buildroot-2024.11.1/output/images/sdcard.img,if=sd,bus=2,format=raw,id=mmcblk2 \ -device usb-host,bus=usb-bus.0,port=1,vendorid=0x04f2,productid=0xb729 \ -monitor telnet:127.0.0.1:4444,server,nowait   Re: Can qemu emulate i.MX 8M Plus ? Hello, I am emulating the i.MX8MP board in QEMU and trying to connect my laptop’s built-in camera to the board using USB passthrough. I used the following command: sudo /home/arif/src/qemu/build/qemu-system-aarch64 \ -M imx8mp-evk -smp 4 -m 3G -display none -serial null -serial stdio \ -kernel /home/arif/imx-qemu/buildroot-2024.11.1/output/images/Image \ -dtb /home/arif/imx-qemu/buildroot-2024.11.1/output/images/imx8mp-evk.dtb \ -append "root=/dev/mmcblk2p2" \ -drive file=/home/arif/imx-qemu/buildroot-2024.11.1/output/images/sdcard.img,if=sd,bus=2,format=raw,id=mmcblk2 \ -usb -device usb-ehci,id=ehci -device usb-host,hostbus=1,hostaddr=3 When I checked the camera on the host, I saw the “device not found” error — meaning QEMU successfully captured the device — but when I listed connected USB devices inside QEMU, the camera was not visible at all. Do you have any idea what I might be doing wrong? I would really appreciate your help. Re: Can qemu emulate i.MX 8M Plus ? Finally,I run the qemu command: qemu-system-aarch64 \     -machine virt  \     -cpu cortex-a53 \     -smp 4 \     -m 2G \     -kernel ./Image \     -drive file=imx-image-full-imx8mpevk.qcow2,if=none,id=drive0,format=qcow2 \     -device virtio-blk-pci,drive=drive0 \     -append "root=/dev/vda2 rootwait rw console=ttyAMA0,115200" \     -netdev user,id=eth0 \     -device virtio-net-device,netdev=eth0 \     -device virtio-gpu-pci \ -nographic the virtual machine can setup successfully. Re: Can qemu emulate i.MX 8M Plus ? I run the qemu setup command: qemu-system-aarch64 \ -machine imx8mp-evk \ -cpu cortex-a53 \ -m 2G \ -smp 4 \ -kernel ./imx-image-full-imx8mpevk/boot/Image \ -drive file=imx-image-full-imx8mpevk.qcow2,format=qcow2,id=disk,if=none \ -append "root=/dev/vda console=ttyAMA0" the system can't be loaded successfully.Can you help me check the command, the argument -kernel is right? Re: Can qemu emulate i.MX 8M Plus ? no, Xtensa is not supported by qemu. Re: Can qemu emulate i.MX 8M Plus ? Thank you for the reply. Could  I ask for another question about qemu + i.MX 8M Plus? I'd like to know qemu + i.MX 8M Plus supports emulating xtensa dsp core? How to run a xtensa application under qemu + i.MX 8M Plus? Re: Can qemu emulate i.MX 8M Plus ? Hello mm2021, The qemu-system-aarch64 binary supports all the 32-bit CPUs and boards, in the same way that qemu-system-x86_64 lets you run a 32-bit x86 CPU guest, which is why the list is so long and full of 32-bit boards. You cannot just try to use a 32-bit board with a -cpu cortex-a53, since is 64 bits. Regards
記事全体を表示
CAN qemu は i.MX 8M Plus をエミュレートしますか? i.MX 8M Plusボードを持っていないSO、qemu でi.MX 8M PlusをエミュレートできるCANかどうか教えてください。 i.MX 8M Plus をベースにした qemu Linux を実行したいと思います。 qemu Linux は、 SOF プロジェクト のような XTENSA によってコンパイルされたアプリケーションを実行できますか? 情報を提供できる方はどなたでも歓迎します。 Re: Can qemu emulate i.MX 8M Plus ? 問題を解決しました。QEMU の i.MX8MP エミュレーションでは、すでに独自の USB コントローラ (DWC3/XHCI) が作成されています。-device usb-ehci,id=ehci コマンドを使用して別の EHCI USB コントローラを追加していましたが、これらの 2 つのコントローラは独立して動作していました。EHCI コントローラに接続したデバイスは、i.MX8MP の実際の USB バスと通信できませんでした。EHCI コントローラを削除し、代わりにボードに組み込まれた USB コントローラを使用することで、カメラをボードに正常に接続できるようになりました。 動作するコマンドは次のとおりです。   sudo /ホーム/arif/src/qemu/build/qemu-system-aarch64 \ -M imx8mp-evk -smp 4 -m 3G -display none -serial null -serial stdio \ -kernel /ホーム/arif/imx-qemu/buildroot-2024.11.1/output/images/Image \ -dtb /ホーム/arif/imx-qemu/buildroot-2024.11.1/output/images/imx8mp-evk.dtb \ -append "root=/dev/mmcblk2p2" \ -drive file=/ホーム/arif/imx-qemu/buildroot-2024.11.1/output/images/sdcard.img, if =sd,bus=2,format=raw, id =mmcblk2 \ -device usb-host、バス=usb-bus.0、ポート=1、ベンダーID=0x04f2、製品ID=0xb729 \ -monitor telnet:127.0.0.1:4444、サーバー、待機なし   Re: Can qemu emulate i.MX 8M Plus ? こんにちは、 QEMU で i.MX8MP ボードをエミュレートし、USB パススルーを使用してノートPCの内蔵カメラをボードに接続しようとしています。 次のコマンドを使用しました: sudo /home/arif/src/qemu/build/qemu-system-aarch64 \ -M imx8mp-evk -smp 4 -m 3G -ディスプレイなし -シリアル null -シリアル stdio \ -kernel /home/arif/imx-qemu/buildroot-2024.11.1/output/images/Image \ -dtb /home/arif/imx-qemu/buildroot-2024.11.1/output/images/imx8mp-evk.dtb \ -append "root=/dev/mmcblk2p2" \ -drive ファイル = /home/arif/imx-qemu/buildroot-2024.11.1/output/images/sdcard.img、if = sd、バス = 2、フォーマット = raw、id = mmcblk2 \ -usb -device usb-ehci、id=ehci -device usb-host、ホストバス=1、ホストアドレス=3 ホスト上のカメラをチェックすると、「デバイスが見つかりません」というエラーが表示されました。これはQEMUがデバイスを正常にキャプチャしたことを意味します。 しかし、QEMU 内でコネクテッド USB デバイスを一覧表示すると、カメラはまったく表示されませんでした。 私が何を間違っているのか、何かアイデアはありますか?本当に助かります。 Re: Can qemu emulate i.MX 8M Plus ? 最後に、qemu コマンドを実行します。 qemu-system-aarch64 \ -マシン仮想\ -CPU Cortex-a53 \ -smp 4 \ -m 2G \ -カーネル ./イメージ\ -drive file=imx-image-full-imx8mpevk.qcow2、if=none、id=drive0、format=qcow2\ -device virtio-blk-pci、ドライブ=ドライブ0 \ -append "root=/dev/vda2 rootwait rw console=ttyAMA0,115200" \ -netdev ユーザー、ID = eth0 \ -device virtio-net-device,netdev=eth0 \ -device virtio-gpu-pci \ -ノグラフィック 仮想マシンを正常にセットアップCAN。 Re: Can qemu emulate i.MX 8M Plus ? qemu セットアップ コマンドを実行します。 qemu-system-aarch64 \ -マシン imx8mp-evk \ -CPU Cortex-a53 \ -m 2G \ -smp 4 \ -kernel ./imx-image-full-imx8mpevk/boot/イメージ\ -ドライブ ファイル=imx-image-full-imx8mpevk.qcow2、フォーマット=qcow2、ID=ディスク、if=なし\ -append "root=/dev/vda console=ttyAMA0" システムを正常にロードできません。コマンドの引数 -kernel が正しいかどうか確認してもらえますか? Re: Can qemu emulate i.MX 8M Plus ? いいえ、Xtensa は qemu ではサポートされていません。 Re: Can qemu emulate i.MX 8M Plus ? ご返信ありがとうございます。 qemu + i.MX 8M Plusについてもう一つ質問してもよろしいでしょうか? qemu + i.MX 8M Plus が xtensa dsp コアのエミュレーションをサポートしているかどうかを知りたいです。 qemu + i.MX 8M Plus で xtensa アプリケーションを実行するにはどうすればいいですか? Re: Can qemu emulate i.MX 8M Plus ? こんにちは、mm2021さん qemu-system-aarch64 バイナリは、qemu-system-x86_64 で 32 ビット x86 CPU ゲストを実行できるのと同じように、すべての 32 ビット CPU とボードをサポートしています。そのため、リストが非常に長く、32 ビット ボードが満載になっています。-cpu Cortex-a53 は 64 ビットなので、32 ビット ボードをそのまま使用することはできません。 よろしくお願いします。
記事全体を表示
完全に合法的な命令に対する違法な1010および1111の例外 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 68EN360で完全に合法的な命令であるはずなのに、ランダムな不正な例外(1010と1111)が発生しています。 コードがFLASH不足です(29F800または類似品) 例外ハンドラーでは、障害が発生したプログラム カウンターの命令を読み取って比較することができます。いつも一致します。   3 ワード命令の途中への誤ったジャンプを検討しましたが、一連のいくつかの単純な 1 ワード命令 (単純なレジスタ移動、レジスタ演算など) の途中でもこのジャンプが発生したことがあります。Fxxx で始まらない命令で F ライン エミュレーション例外が発生することも確認しました。 さらに奇妙なことに、この問題はソフトウェア アップデート後に発生し、その後のアップデート後には消えましたが、その後のアップデートで再び発生しました。   不正なポインターによるバス エラーや、破損したスタックからの戻りによる非常に明白な不正な命令が時々発生しましたが、ほとんどの場合、問題は多かれ少なかれすぐに特定できました。   この問題は本当に私たちを困惑させており、ソフトウェアでこれを修正するよう強いプレッシャーを感じています。   https://community.freescale.com/message/87784#87784と関係があるのだろうか 何かアイデアはありますか?   よろしくお願いいたします L di/dt 全般 Re: Illegal- 1010- and 1111-exception on perfectly legal instructions 一見有効な指示であっても例外が発生する可能性があるという点は興味深い点です。場合によっては、こうした問題の背後にあるより深い法的解釈を理解するには、詳細な現地のCASEデータや司法の見解を確認することが必要になります。郡レベルのシステム内でこのような例外がどのように処理されるかについてのより良い背景情報については、郡治安判事についてさらに詳しく調べることができます。明確さと正確さを確保するには、このようなマターをクロス・リファレンスすることが常に役立ちます。 Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 古いメールを確認しています。 アップデート: FLASH メーカーと DIMM ソケットが変更されました。すべて仕様範囲内ですが、PCB のデザイン/レイアウトの問題が明らかになる程度には十分です。 アドレス ラインにリンギングがありましたが、FLASH メーカーの小さな違いと DIMM ソケットの変更がリンギングにほんの少し影響していました。 運が悪かっただけで、特定のアドレス シーケンスで特定のアドレス ラインが '1' から '0' に変化し、FLASH が間違ったアドレスをラッチする結果になりました (セットアップ/安定化時間違反) PCB 設計者は、わずか数オームの直列インピーダンス整合抵抗器を追加し、レイアウトに合わせて微調整して、信号の見栄えを良くしました。いくつかの怪しいルーティングをクリーンアップしました。いくつかの行は他の行と比べて非常に長かったです。実際のレイアウトの変更は非常に小さいものでした。 最終的にこれがどれだけの費用がかかったのか全くアイデアがありません。 教訓: 33MHz のような低速の CPU であっても、慎重なレイアウトとインピーダンス整合が重要です。レイアウトを作成して「動作する」という簡単なチェックだけでは不十分です。 この問題は解決しました。 私の通常の署名は奇妙なほど適切です。 よろしくお願いします。 - L di/dt。 Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ロブ、調子はどうですか? ぜひご報告ください! よろしくお願いいたします! Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 私が書いた: > それでも、68360 は...なんと! 20 年も前のものです!データシートの日付は 1993 年です。この製品 > 過去のある時点で動作していたはずです。最近何が変わりましたか? これは、製品がかなり古く、使用されているボードがかなり古いものであることを意味します。 これらのボードの一部が、「コンデンサ疫病」が猛威を振るっていた 2001 年と 2002 年の暗黒時代に作られたものであるかどうか確認した人はいますか? http://en.wikipedia.org/wiki/コンデンサー疫病 上記の優れた記事を読むと、「通常の」コンデンサの寿命(および「疫病」により早期に故障したコンデンサの寿命)の詳細がわかります。故障したボードの一部が 10 ~ 15 年前のものである場合、コンデンサが乾燥して機能しなくなっている可能性があります。ソフトウェアのバージョンが異なると、動作電流のパターンも異なる場合があり、古いコンデンサと相まって、観察される問題を引き起こしている可能性があります。 Tom Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> > コードのフラッシュメモリが不足しています RAM のアドレスで実行するようにコードをコンパイルし、起動時に FLASH から RAM にコピーしてそこから実行するのに十分な RAM がありますか? これにより、問題が「FLASH からの読み取り」の問題か「そのバス上の任意の場所からの読み取り」の問題かに切り分けられるはずです。 問題が解決し、十分な RAM がある場合は、これを半永久的な解決策として適用できる可能性があります。 それでも、68360 は...なんと! 20 年も前のものです!データシートの日付は 1993 年です。この製品は過去のある時点で動作していたはずです。最近何が変わりましたか? ああ、そうだね、こう言ったね。 > さらに奇妙なことに、この問題はソフトウェアのアップデート後に発生しました。 SO、古いバージョンと新しいバージョンの間で「バイナリ チョップ」を実行し、問題の原因となる最小限の変更を絞り込むようにしてください。それでも明らかな変化が見られない場合は、古いコードと新しいコードを (たとえば) 4k または 16k のアドレス境界を増やして再リンクし、シフトされた「良い」コードが悪くなるか、「悪い」コードが良くなるかを確認します。 2 つのバージョン間で MAP ファイルを印刷して比較し、関数が移動したかどうか、または重要な何かが以前は越えていなかったアドレス境界を越えたかどうかを確認します。コードとデータが存在するアドレス範囲とアドレス パターンを考慮してください。コードをプロファイルして、「ホット スポット ループ」がどこにあるかを確認し、これらの「ホット スポット」を移動すると (FLASH の先頭または末尾ですべてをリンクするなど)、問題が変化するかどうかを確認します。 これはイーサネット上にあると思います。ネットワークをロードします。基本的に、徹底的にpingします。複数の Linux シェルを実行し、5 個または 20 個のシェルから同時に「ping -f」を実行します。そのアクティビティによって失敗する頻度が高くなる場合は、より優れたテストが得られたということになります。 Tom Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> > 命令の中に絶対アドレスが含まれているCASEをいくつか見つけました。 >「MOVE.B D0,(00012345)」は、障害アドレスFFFF2345でバスエラーを引き起こしました。 16 ビット フラッシュ バスと 32 ビット フラッシュ バスのどちらがありますか?16 ビットを使用している場合、アドレスは上位ワードを先頭に 2 サイクルでフェッチされますが、その 1 つが何らかの理由で間違っています。 32 ビット バスを使用している場合、上位半分が正しく読み取られません。 すべて 1 が読み取られるということは、プルアップ付きのオープン バス (プルアップはありますか?) か、フラッシュの消去された部分を読み取ったかのいずれかです。あなたは懸垂をしていないと思う、SO後者を疑っています。 これが発生する可能性があるのは、上位アドレス ビットの 1 つがフラッシュ チップの 1 つによって「高」としてサンプリングされ、読み取ろうとしていたメモリ位置ではなく、高位 (消去済み) のメモリ位置が読み取られている場合です。不思議なことに、他のフラッシュは正しいアドレスを取得しました。 これは、限界レベルおよび/またはタイミングがあることを示しているようです。最悪のCASEは、低いままに留まろうとしている 1 つの不良アドレス ビットを除いて、すべてのアドレス ビットがすべて 0 からすべて 1 に変更される場合です。容量性結合 (他のすべてのトラックから) と誘導性結合の組み合わせ、および駆動チップ (CPU) 上の「グランド バウンス」により、フラッシュ チップがそのアドレスをラッチするときに、その低いアドレスがしきい値を超えるCAN。 SO、アドレスが遷移するときと、新しいサイクルを開始するために信号がフラッシュ チップに送信されるときとの間のタイミング マージンを増やす必要があります。 また、高性能のオシロスコープを使用して、アドレス バス上でこのような現象を探す必要があります。また、アンダーシュートとオーバーシュートの証拠を探す必要があります。これらは、特に「シュート」の頻度、それが発生するピンの数、および温度の上昇に応じて、RAM および FLASH チップをわずかに狂わせるCANがあります。 コードが変更されて、アドレス境界 (0x07fffff0 から 0x08000000) を越えて「ビジー」になり、データ バス上のアドレスも「ビジー」になると、しきい値を超えてこれがトリガーされるCANがあります。 アドレス バスに直列抵抗がありますか?データバスにそれらはありますか? データ バスの遷移 (CPU、RAM、ROM が交互にこのバスを駆動することを覚えておいてください) も、アドレス バスに結合 CAN。データ バス遷移とアドレス バス遷移間の理論上および測定/観測されたタイミング関係は何ですか?制御バス信号はどうですか? このチップは、一部のクロック ラインでは可変の駆動強度を備えていますが、データ ライン、アドレス ライン、または制御ラインでは可変の駆動強度を備えていません。新しいチップにはこの機能があり、非常に便利です。MCF5329 でひどい RAM 破損が発生しましたが、アンダーシュートとオーバーシュートにより SDRAM が異常動作していたため、ドライブ強度を下げたら破損は解消しました。 チップは BGA、PGA、それとも QFP ですか?接地とバイパスはどうなっていますか? これは複数のボードで発生しますか?これは新しく構築されたハードウェアで発生し始めたのでしょうか、それとも新しいソフトウェアがすべてのボードでこれをトリガーしているのでしょうか? Tom Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ありがとう、助かります。 唯一の DMA はオンチップペリフェラルによって処理されます。 この問題は、イーサネットの有無にかかわらず、トラフィック量がそれほど多くないシステムで発生します。 フラッシュは標準装備、有名メーカー製、バーストなし。 最大待機状態、タイミング緩和設定、転送間の遅延待機を最大にしたテスト バージョンでも同じ問題が発生しました。 通常の室温でも問題が観察されます。 興味深いことに、「F」が好きなようです 命令の中に絶対アドレスが含まれているCASEがいくつか見つかりました。「MOVE.B D0,(00012345)」のようなものです。 障害アドレスFFFF2345でバスエラーが発生した (実際の住所ではありません) 問題は、SWの最も実行量の多い部分で発生する傾向がある。 リンカー内のモジュールの順序を変更すると、問題が発生する頻度と、問題がどのモジュールに表示されるかが影響を受けるようです。 かつて CPM ロードの問題が発生したことがあり、その問題により SPI 割り込みがモジュール割り込みレジスタに設定されるものの、複数の割り込みが同時に発生したCASEには CPU にアサートされませんでした。ただし、これは解決されています (最後に処理された割り込み後の割り込み保留レジスタの追加チェック)。 Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> CPU のすべてのエラッタを読んでください。どのマスクを使っていますか。B0 エラッタをざっと読むと、さまざまな破損の問題があることがわかります。 MPC860 でも同様の問題に遭遇したことがあります。キャッシュと分岐予測にバグがあり、1 週間に 1 回SO分岐が壊れるという問題がありましたが、68000 はこのような問題が発生するほど複雑ではないはずです (まず、キャッシュがありません)。 この問題は、メモリ内のコード ALIGNMENT が原因で、ソフトウェア バージョンごとに発生したり消えたりしました。ビルドが失敗したときは、命令を 1 つ追加する (残りの命令をすべて下に移動する) と、通常は問題が解決します。 SO、コードのさまざまな部分に「NOP」(または同等のもの)を追加して「移動」し、問題が解決するかどうかを確認してください。敏感な領域に焦点を絞るために「バイナリ チョップ」を実行できるはずです。 FLASH サイクルに待機状態を追加してみて、違いがあるかどうかを確認してください。 暑い?寒い?高電圧レベルと低電圧レベル? バス サイクルに干渉する可能性のある DMA デバイスはありますか?バス上にゲートアレイチップはありますか?「バーストモード」はフラッシュですか? 失敗する頻度を増やすような何かを見つけてみてください。たとえば、イーサネット トラフィックに関連しているのでしょうか?CPM 負荷? 「クラッシュ」が発生した場合、すべての CPU レジスタを調べ、それを使用して「CPU がそこに到達したとあなたが考えていた方法」が実際にそこに到達した方法であることを証明します。スタックを振り返って、以前はどの関数だったか、以前の関数がスタックに何を保存したかを確認します。次に、その関数がレジスタに対して何を行うかを確認し、その関数が軌道から外れる前にどこまで進んだかを判断できるかを確認します。これにはパターンが見られるかもしれません。 バスにロジックアナライザーを取り付けることはできますか?それが、どこで失敗しているのかを追跡する唯一の方法かもしれません。すべてが必要なわけではなく、下位 12 個のアドレス ビットをキャプチャするだけで、何が起こったかをさかのぼって追跡できる可能性があります。 Tom
記事全体を表示
如何完全保护 IMX8M 设备 大家好, 我目前正在尝试完全保护 IMX8M 设备。我已经对SRK_HASH进行了编程,目前能够使用签名的引导加载程序和映像执行高度保证启动。 在 AN4581 中,它列出了以下必须经过编程才能完全保护设备的熔丝: • SRK_LOCK:锁定 SRK_HASH [255:0] 熔丝。 • DIR_BT_DIS:禁用直接外部存储器启动。 - SJC_DISABLE:禁用安全 JTAG 控制器模块。 • JTAG_SMODE:将 JTAG 网络安全模式设置为无调试模式 0x11。 - JTAG_HEO:禁止启用 HAB JTAG。 • BOOT_CFG_LOCK:锁定与启动相关的熔丝。 我通过阅读 SRK_LOCK、BOOT_CFG_LOCK 和 S EC_CONFIG 的 IMX8MDQLQRM 和 IMX8MDQLQSRM 计算出单词、bank 和熔丝 的值:(请告诉我这些值是否正确)。 SRK_LOCK 保险丝插头 0 0 0 x100 BOOT_CFG_LOCK 熔丝插头 0 0 0xC SEC_CONFIG 熔丝插头 1 3 0x2000000 对于 DIR_BT_DIS,技术规范规定: " 在以启用网络安全的配置发货设备之前,必须对 DIR_BT_DIS eFuse 进行编程。 如果该电子保险丝 没有熔断,则系统不安全。" 因此,我认为无需对其进行编程。 关于SJC_DISABLE 和JTAG_SMODE ,我无法在技术规范中找到相关映射,但在论坛上看到了一篇帖子,其中详细介绍了以下内容: 熔丝地址 熔断器名称 位数 熔丝功能 设置 已使用 0x470[21] SJC_DISABLE 1 禁用/启用安全 JTAG 控制器模块。该熔丝用于创建最高的 JTAG 网络安全级别,其中 JTAG 被完全屏蔽。 0 - 启用安全 JTAG 控制器 1 - 禁用安全 JTAG 控制器 SJC 0x470[23:22] jtag_smode[1:0] (标记模式) 2 JTAG 网络安全模式。控制 JTAG 调试接口的 网络安全 模式 00 - 启用 JTAG 模式 01 - 安全 JTAG 模式 11 - 无调试模式 SJC https://community.nxp.com/t5/i-MX-Processors/DIR-BT-DIS-and-others/m-p/1212354 而且我也没有看到JTAG_HEO的提示。 为了完全保护设备,我想了解以下内容: DIR_BT_DIS 是否需要编程?如果是,是什么值? 对于SJC_DISABLE 和JTAG_SMODE ,上表中的0x470[21] 和0x470[23:22] 值是否正确? 如果是的话,我需要编程 JTAG_HEO 吗?它的熔丝映射是什么? 我还需要编程什么来完全保护设备吗。例如,我需要对诸如 FIEL D_RETURN 之类的熔丝进行编程吗? 请问谁能提供相关信息或文件,详细说明这一点。 亲切的问候, Tom Re: How to fully secure an IMX8M device 您好, I.MX8MP EVK JTAG 检测问题。 使用 putty 在 Uboot 启动时停止了默认映像 eMMC。 uboot 后 在 Putty 终端中读取收到的以下数据、 0x470[21] SJC_DISABLE = 0x1 0x470[23:22] JTAG_SMODE[1:0][1:0] = 0x11 在数据表中 JTAG_SMODE[1:0] = 0x11 表示 [11 - 无调试模式] 如何重新进入调试 JTAG 模式???? 请指导我们 Re: How to fully secure an IMX8M device 你好@emmanuel_madrigal 由于某些信息处于保密协议之下,建议向机密协助部门提出投诉 此致 哈维 Re: How to fully secure an IMX8M device 嗨,哈维、 您能否将这些信息也发给我? 此致, 埃马纽埃尔 Re: How to fully secure an IMX8M device 您好, 由于某些熔丝信息无法公开讨论,将通过系统电子邮件回复您。 此致 哈维 Re: How to fully secure an IMX8M device 我在 5 天前提交了一份关于此问题的报告,但一直没有回音。我也不知道如何跟踪我的票据状态,所以我发表了这条评论。能否请您将帖子中问题的答案通过电子邮件发送给我?
記事全体を表示