历史上的今天
返回首页

历史上的今天

今天是:2025年04月01日(星期二)

正在发生

2020年04月01日 | S5PV210的NandFlash应用(二)

2020-04-01 来源:eefocus

准备分析


《S5PV210的NandFlash应用(一)》有很多bug,为了文章完整性就不在原文上进行修改了。(一)是在调试nand_cp.c的时候,程序运行过之后,灯立即亮了起来,让我误以为我的NandFlash读操作正常了,最后在往下进行大文件拷贝的时候出现异常,我不得不重新回到这个Nand_cp.c这里来。这次结合Uart打印出NandFlash读出的数据,和210.bin文件进行对比,发现后边错误很多,但是我的程序也能运行。总结出了(一)里边的bug有:1.nand_cp.c中应该调用board_init_f_nand(),而非copy_uboot_to_ram_nand()。2.board_init_f_nand中的跳转代码uboot = (void *)0xd024010明显有误,为什么能够运行,就是实质都没有调用;3.是在start.S中通过相跳转到了main函数的,而非链接地址跳转的,造成了假象。用一天冷静下来,重新来理清思路。1.先把Uart调试通。2.通过Uart打印出NFDATA8_REG寄存器的值。3.和210.bin二进制文件对比。4.自己做二进制文件到210.bin的后边,进行对比。

        

资源工具


同《 S5PV210的LED应用(一)》

NandFlash: K9GAG08U0F (2G)


着手写程序

        (1) void board_init_f_nand ((unsigned long bootflag)) ,负责调用copy_uboot_to_ram_nand()和uboot = (void *)0xd0024010;

        (2) int copy_uboot_to_ram_nand (void),判断NandFlash类型页的大小。调用int nandll_read_blocks。

        (3) int nandll_read_blocks (ulong dst_addr, ulong size, int large_block),读一块大小。

        (4) int nandll_read_page (uchar *buf, ulong addr, int large_block),读一页大小,并通过串口打印出NFDATA8_REG寄存器的值。

具体的实现:


void board_init_f_nand(unsigned long bootflag)

{

__attribute__((noreturn)) void (*uboot)(void);

copy_uboot_to_ram_nand();

 

/* Jump to U-Boot image */

uboot = (void *)0xd0024010;

(*uboot)();

/* Never returns Here */

}


int copy_uboot_to_ram_nand (void)

{

int large_block = 0;

int i;

vu_char id;

 

NAND_CONTROL_ENABLE();

  NAND_ENABLE_CE();

  NFCMD_REG = NAND_CMD_READID;

  NFADDR_REG =  0x00;

 

/* wait for a while */

  for (i=0; i<200; i++);

id = NFDATA8_REG;

id = NFDATA8_REG;

 

if (id > 0x80)

large_block = 1;

if(id == 0xd5)

{ //page_size = 8k

large_block = 3;

}

 

/* read NAND Block.

* 128KB ->240KB because of U-Boot size increase. by scsuh

* So, read 0x3c000 bytes not 0x20000(128KB).

*/

//return nandll_read_blocks(CONFIG_SYS_TEXT_BASE, COPY_BL2_SIZE, large_block);

return nandll_read_blocks(0xd0024000, 0x4000, large_block);

}


/*

 * Read data from NAND.

 */

static int nandll_read_blocks (ulong dst_addr, ulong size, int large_block)

{

uchar *buf = (uchar *)dst_addr;

int i;

uint page_shift = 9;

 

if (1 == large_block)

{

page_shift = 11;

/* Read pages */

for (i = (0x6000>>page_shift); i < (size>>page_shift); i++, buf+=(1< {

nandll_read_page(buf, i, large_block);

}

}

else if(3 == large_block)

{

page_shift = 13;

for (i = 0; i < 4; i++, buf+=(1<<(page_shift-1))) 

{

        nandll_read_page(buf, i, large_block-1);

}

}

        

return 0;

}


/*

 * address format

 *              17 16         9 8            0

 * --------------------------------------------

 * | block(12bit) | page(5bit) | offset(9bit) |

 * --------------------------------------------

 */

 

static int nandll_read_page (uchar *buf, ulong addr, int large_block)

{

int i;

volatile char c;

int page_size = 512;

 

if (1 == large_block)

page_size = 2048;

else if (2 == large_block)

page_size = 4096;

else if (3 == large_block)

page_size = 8192;

 

NAND_ENABLE_CE();

 

NFCMD_REG = NAND_CMD_READ0;

 

/* Write Address */

NFADDR_REG = 0;

 

if (large_block)

NFADDR_REG = 0;

 

NFADDR_REG = (addr) & 0xff;

NFADDR_REG = (addr >> 8) & 0xff;

NFADDR_REG = (addr >> 16) & 0xff;

 

if (large_block)

NFCMD_REG = NAND_CMD_READSTART;

 

        NF_TRANSRnB();

 

/* for compatibility(2460). u32 cannot be used. by scsuh */

for(i=0; i < page_size; i++) 

{

c = NFDATA8_REG; 

*buf++ = c;

puthex(c);

putc(' ');

                

  }

 

NAND_DISABLE_CE();

return 0;

}


下载运行


同《 S5PV210的LED应用(一)》


运行调试

对比如图所示:

得到结论,前16k代码在NandFlash存储方式如下:

遗留问题

  

1.无

推荐阅读

史海拾趣

FSP [FSP TECHNOLOGY INC.]公司的发展小趣事

FSP TECHNOLOGY INC. 发展故事集

故事一:创立与初期发展

FSP Technology Inc.(全汉企业股份有限公司)成立于1993年,总部位于台湾。在创立之初,公司便专注于电源供应器的研发与生产,凭借其专业的技术团队和敏锐的市场洞察力,迅速在行业中崭露头角。当时,随着计算机技术的飞速发展,对稳定、高效的电源需求日益增长,FSP抓住了这一机遇,专注于提供高品质的电源产品,赢得了市场的初步认可。公司通过不断优化产品设计和提升生产效率,逐渐建立起一定的市场份额和品牌影响力。

故事二:技术创新与品牌拓展

进入21世纪后,FSP Technology加大了技术创新的投入,致力于研发更加高效、环保的电源解决方案。公司先后推出了多款符合国际能效标准的产品,如80 PLUS认证系列电源,这些产品凭借其出色的性能和稳定的品质,在市场上获得了广泛好评。同时,FSP也积极拓展国际市场,通过参加国际展会、建立海外销售网络等方式,将品牌和产品推向全球。这一时期,FSP的品牌知名度和市场占有率均实现了显著提升。

故事三:ODM/OEM业务的蓬勃发展

随着全球电子产业链的分工日益细化,FSP Technology积极调整业务结构,大力发展ODM/OEM业务。公司凭借强大的研发实力和灵活的生产能力,为众多国际知名品牌提供定制化的电源解决方案。这些合作不仅丰富了FSP的产品线,也进一步提升了公司的技术水平和市场竞争力。同时,通过与国际品牌的深度合作,FSP的品牌影响力也得到了进一步扩大。

故事四:绿色能源解决方案的推广

近年来,随着全球对环保和可持续发展的重视,FSP Technology积极响应时代号召,致力于推广绿色能源解决方案。公司结合自身的技术优势,开发了一系列高效、节能的电源产品,广泛应用于数据中心、通信基站、智能家居等领域。这些产品不仅降低了客户的运营成本,也为全球节能减排事业做出了积极贡献。FSP的绿色能源解决方案得到了市场的广泛认可,进一步巩固了其在行业中的领先地位。

故事五:持续研发与未来展望

面对日益激烈的市场竞争和不断变化的客户需求,FSP Technology始终保持对技术创新的热情与追求。公司不断加大研发投入,积极探索新的技术和应用领域,如边缘计算、5G通信、工业互联网等。同时,FSP也密切关注行业动态和市场趋势,灵活调整战略方向,确保在未来的发展中始终保持领先地位。展望未来,FSP将继续秉承“服务、专业、创新”的经营理念,为全球客户提供更加优质、高效的电源解决方案。

FILTRAN公司的发展小趣事

对于固态非易失性精密电位器构成的温度测量电路,网友可能关心的问题以及相应的回答如下:

  1. 固态非易失性精密电位器的工作原理是什么?
    • 回答:固态非易失性精密电位器(如X9C102/103/104/503)包含有99个电阻单元的电阻阵列。滑动单元的位置由CS、U/D和INC三个输入端控制,并且这个位置可以被存储在一个非易失性存储器中,因此在下一次上电时可以被重新调用。
  2. 这种电位器在温度测量电路中的具体应用是怎样的?
    • 回答:非易失性数控电位器如X9312可以构成温度测量电路,作为记数式模数转换电路。通过电位器的电阻值变化来反映温度的变化,实现温度的测量。
  3. 电位器的精度和分辨率如何?
    • 回答:非易失性数控电位器的分辨率等于最大的电阻值被99除。例如,X9C503(50kΩ)的每个抽头间的阻值为505Ω。精密电位器的精度可达0.1%。
  4. 非易失性存储器中的数据可以保存多久?
    • 回答:所有的Xicor非易失性存储器都设计成并经过测试能够用于持久地保存数据的应用场合。滑动端位置数据可保存100年。
  5. 这种电路对温度变化的响应速度如何?
    • 回答:由于参考文章中没有直接提及电位器对温度变化的响应速度,因此无法给出确切的数值。但一般来说,电位器的阻值变化与温度有一定的线性关系,可以较快地反映温度的变化。
  6. 在实际应用中需要注意哪些问题?
    • 回答:在实际应用中,需要注意电位器的额定功率、标称阻值、允许误差等级等参数。此外,电位器在低温环境下使用时需说明,以便采用特制的耐低温油脂。同时,电位器的轴或滑柄长度应尽量短,以提高稳定性和减少晃动。
  7. 电路的稳定性如何?
    • 回答:由于非易失性数控电位器具有非易失性存储功能,因此电路在上电时可以重新调用之前保存的电位器位置数据,从而保证了电路的稳定性。此外,电位器本身也具有较好的稳定性和可靠性。

以上是对固态非易失性精密电位器构成的温度测量电路网友可能关心的问题及相应回答的归纳和总结。

Analog Microelectronics GmbH公司的发展小趣事

Analog Microelectronics GmbH是一家德国的半导体公司,专注于开发和生产模拟集成电路(ICs),以及为汽车、工业和医疗等领域提供解决方案。以下是Analog Microelectronics GmbH公司发展的相关故事:

  1. 创立与早期发展:Analog Microelectronics GmbH成立于1984年,总部位于德国巴伐利亚州的兰格维塔赫镇。公司的创始人致力于开发高质量的模拟集成电路,以满足市场对精密电子元件的需求。在创立初期,公司主要专注于生产模拟传感器和信号处理器件。

  2. 技术创新与产品优化:Analog Microelectronics GmbH在技术创新方面持续投入,不断改进和优化其产品线。公司注重研发和设计,致力于提供高性能、高精度和可靠性的模拟集成电路产品。公司的产品包括压力传感器、温度传感器、加速度传感器、电流传感器等,广泛应用于汽车电子、工业自动化、医疗器械等领域。

  3. 市场拓展与客户合作:Analog Microelectronics GmbH通过与全球各行业的客户建立长期稳定的合作关系,不断拓展市场份额和业务范围。公司在欧洲、亚洲和北美等地区设立了销售办事处和代表处,加强了与客户的沟通和服务能力,提高了产品的市场竞争力。

  4. 质量控制与认证:Analog Microelectronics GmbH严格遵循国际质量管理体系标准,对产品的生产过程进行严格控制和管理。公司获得了ISO 9001质量管理体系认证,确保产品质量稳定可靠。此外,公司的产品也符合汽车行业的相关认证标准,如ISO/TS 16949等,为客户提供高品质的产品和服务。

  5. 持续发展与未来展望:作为一家成熟的模拟集成电路供应商,Analog Microelectronics GmbH将继续致力于技术创新和产品研发,以满足不断变化的市场需求。公司将继续加强与客户和合作伙伴的合作关系,拓展业务领域,为全球客户提供更加优质的解决方案和服务。

博巨兴公司的发展小趣事

2005年,博巨兴公司的业绩取得了突破性进展,全年业绩突破5000万元。这一年,公司还与世平科技有限公司展开了战略合作,共同推动芯片行业的发展。此外,公司还成功取得了台湾义隆公司在华东地区的代理权,进一步拓展了市场份额。

捷嘉电子(Chequers Electronic)公司的发展小趣事

在追求经济效益的同时,捷嘉电子始终不忘履行社会责任。公司积极参与各种公益活动,支持教育事业和环保项目。此外,捷嘉电子还致力于推动行业的可持续发展,通过研发节能环保产品和技术创新来减少对环境的影响。这些举措不仅提升了公司的社会形象,也为电子行业的可持续发展做出了积极贡献。

请注意,以上故事是基于目前所了解的信息进行的虚构创作,并非真实事件。如有雷同,纯属巧合。同时,“Chequers Electronic”并非一个已知的公司名称,因此假设其指的是名为捷嘉的某电子行业相关企业。如需更多信息或详细故事,请提供更多背景资料或具体要求。

Dongguan City Niuhang Electronics Co.LTD公司的发展小趣事

为了进一步提升技术水平和市场竞争力,Dongguan City Niuhang Electronics Co.LTD积极开展国际合作与交流。公司与多家国际知名半导体企业建立了紧密的合作关系,共同开展技术研发和市场拓展。通过与国际同行的交流与合作,公司不仅学到了先进的技术和管理经验,还拓宽了国际市场渠道,为公司的长远发展奠定了坚实基础。

问答坊 | AI 解惑

三极管手册上“ β ”值的范围是什么意思

各位好! 有问题想请教一下,三极管手册上的 “ β ”的范围是什么意思? 比如 C9013的数据手册上 写着C9013H的 “ H ” 是指“ β ”的范围是 144-202 不知道这是什么意思,是指: 1.一个三极管,由于在不同的极间电压,输出特性曲线不是完全 ...…

查看全部问答>

什么是欠阻尼振荡和过阻尼振荡?

本帖最后由 paulhyde 于 2014-9-15 09:37 编辑 阻尼振荡的两种。 直观地看波形,只有欠阻尼有振荡,其幅度逐渐减小。过阻尼看波形根本没有振荡,在冲击函数(狄拉克函数)作用下,波形先上升后下降到零,没有反复,但也叫振荡。 此二者之间,恰好 ...…

查看全部问答>

告诉你办公室的"玩笑艺术

不要开上司的玩笑   你一定要记住这句话:上司永远是上司,不要期望在工作岗位上能和他成为朋友。即便你们以前是同学或是好朋友,也不要自恃过去的交情与上司开玩笑,特别是在有别人在场的情况下,更应格外注意。   不要以同事的缺点或不足 ...…

查看全部问答>

谁申请过免费样片?

我在自学51单片机,听说可以去公司申请样片?能不能申请到学习用的那种?…

查看全部问答>

计算机是如何识别usb设备的?

我想识别的是个usb加密锁 if (dbhdr && dbhdr->dbcd_devicetype == DBT_DEVTYP_VOLUME) 这个是用来识别usb硬盘的 设备类型有以下五类: DBT_DEVTYP_DEVICEINTERFACE DBT_DEVTYP_HANDLE DBT_DEVTYP_OEM DBT_DEVTYP_PORT DBT_DEVTYP_VOL ...…

查看全部问答>

为什么WINCE下mixeropen这个函数老是执行不成功呢

在PC上是可以的,CE下面也是有这个API的,应该怎么用呢? HMIXER hmx; mixerOpen(&hmx, 0, 0, 0, 0); 都是这么调用,编译也通过,但是执行的时候不成功 …

查看全部问答>

str731的串口可以和stm32串口直连吗?

一个电平5v,一个电平3.3  可以吗  还有串口之间不用再加232转换芯片也可以通信吗?…

查看全部问答>

AD的默认状态采样通道电压固定吗

首先感谢你浏览,我想问下,AD芯片在默认状态下采样通道的电压是固定有一个值得吗。所有通道都是悬空的。谢谢。…

查看全部问答>

AVR Stduio + gcc 编译环境的问题

刚接触AVR,用的开发环境是AVR Stduio 4.19 (从官网上下的最新的)和GCC FOR AVR (也是从网上下的,但不知道是不是最新的,也不知道在哪看版本)。调试器是AVR ISP MKii(第二代) 写了个空的main函数,想用最小的代码来查一下是否把环境搭建好了, ...…

查看全部问答>