OK6410A 开发板 (三) 24 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 fs-fat

发布者:koimqerolulk最新更新时间:2022-09-21 来源: csdn关键字:OK6410A  开发板  u-boo  镜像 手机看文章 扫描二维码
随时随地手机看文章

相关配置

CONFIG_CMD_FAT=y


相关文件

fs/fat/fat.c

fs/fs_internal.c

fs/fs.c

cmd/fat.c


命令及命令的使用


fatinfo   - print information about filesystem

fatload   - load binary file from a dos filesystem

fatls     - list files in a directory (default /)

fatsize   - determine a file's size



=> fatinfo mmc 0:1 

Interface:  MMC

  Device 0: Vendor: Man 0000fe Snr 00023d01 Rev: 0.0 Prod: SD16G 

            Type: Removable Hard Disk

            Capacity: 30474.0 MB = 29.7 GB (62410752 x 512)

Filesystem: FAT16 "NO NAME 


=> fatload mmc 0:1 0x50008000 uImage

1828792 bytes read in 277 ms (6.3 MiB/s)


=> fatls mmc 0:1                    

  1828792   uImage

1 file(s), 0 dir(s)


=> fatsize mmc 0:1 uImage

// 没有任何打印


命令解析

可以从命令解析的角度了解 fat fs


fatinfo

do_fat_fsinfo cmd/fat.c

blk_get_device_part_str disk/part.c

fat_set_blk_dev fs/fat/fat.c

file_fat_detectfs fs/fat/fat.c

printf("n  Device %d: ", cur_dev->devnum);

dev_print(cur_dev); disk/part.c

read_bootsectandvi(&bs, &volinfo, &fatsize) fs/fat/fat.c

memcpy(vol_label, volinfo.volume_label, 11)

vol_label[11] = '';

volinfo.fs_type[5] = '';

printf("Filesystem: %s "%s"n", volinfo.fs_type, vol_label);


fatls

do_fat_ls cmd/fat.c

do_ls fs/fs.c

fs_set_blk_dev fs/fs.c

blk_get_device_part_str disk/part.c

info->probe/fat_set_blk_dev fs/fat/fat.c

fs_ls fs/fs.c

struct fstype_info *info = fs_get_info(fs_type); fs/fs.c

info->ls(dirname);/fs_ls_generic fs/fs.c

fs_opendir fs/fs.c

struct fstype_info *info = fs_get_info(fs_type); fs/fs.c

info->opendir(filename, &dirs);/fat_opendir fs/fat/fat.c

dirs->desc = fs_dev_desc; fs/fs.c

dirs->part = fs_dev_part; fs/fs.c

while(dent = fs_readdir(dirs)) fs/fs.c

switch(dent->type){

case FS_DT_DIR:

printf("            %s/n", dent->name);break;

case FS_DT_LNK:

printf("       %sn", dent->name);break;

default:

printf(" %8lld   %sn", dent->size, dent->name);break;

}

fs_closedir fs/fs.c

printf("n%d file(s), %d dir(s)nn", nfiles, ndirs);


fatload

do_fat_fsload cmd/fat.c

do_load fs/fs.c

_fs_read fs/fs.c

fs_read_lmb_check fs/fs.c

info->read/file_fat_read_at fs/fat/fat.c

malloc_cache_aligned include/memalign.h

fat_itr_root// 填充itr fs/fat/fat.c

fat_itr_resolve fs/fat/fat.c

get_contents // 搬运数据 fs/fat/fat.c

get_cluster fs/fat/fat.c

disk_read(startsect, idx, buffer); fs/fat/fat.c

blk_dread drivers/block/blk-uclass.c

if (size)disk_read(startsect, 1, tmpbuf);

memcpy(buffer, tmpbuf, size);

printf("%llu bytes read in %lu ms", len_read, time);


应用

=> fatload mmc 0:1 51000000 2led_c.bin

1049 bytes read in 20 ms (50.8 KiB/s)

=> go 51000000

## Starting application at 0x51000000 ...

// 此时会看到 led灯闪烁

// 一定要主要加载地址和链接地址和运行地址的关系

关键字:OK6410A  开发板  u-boo  镜像 引用地址:OK6410A 开发板 (三) 24 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 fs-fat

上一篇:OK6410A 开发板 (三) 25 u-boot-2021.01 boot 解析 U-boot 内存命令 md
下一篇:OK6410A 开发板 (三) 23 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 DM 的一次实例分析 - 串口

推荐阅读最新更新时间:2024-11-18 19:32

OK6410A 开发板 (五) u-boot-2021.01 移植 到 ok6410a
用的代码是 https://github.com/u-boot/u-boot 基于该代码的 TAG v2021.01 开发 用的ok6410a相关代码来自于 https://blog.csdn.net/Golden_Chen/article/details/89077655 代码已经上库 https://github.com/lisider/u-boot/tree/ok6410a 目前做了三次提交 提交 cb36d21d6276ac17507e19974ba974c2b0df87b0 完成了 A. 目录角度 1. s3c6410 soc 的移植 arch/arm/mach-s3c64xx drivers/gpio
[单片机]
u-boot-2011.06在基于s3c2440开发板的移植之支持NandFlash读写
由于s3c2410与s3c2440的NandFlash控制器不一样,因此s3c2440_nand.c文件并不能直接应用,需要进行适当的修改,而主要修改的内容就是s3c2440的相关寄存器。 首先重新定义要用到的寄存器,把原文中第27行至第37行之间的宏定义去掉,改为下面的形式: #define S3C2440_NFCONT_SECCL (1 6) #define S3C2440_NFCONT_MECCL (1 5) #define S3C2440_NFCONT_INITECC (1 4) #define S3C2440_NFCONT_nCE (1 1) #define S3C2440_NFCONT_MODE
[单片机]
使用MSP430 Launchpad开发板连接HC-05蓝牙模块控制LED灯
尽管在过去十年中引入了许多无线技术,但是蓝牙仍然是短距离无线通信中最受欢迎的技术。在嵌入式系统中,HC-05 / 06是最受欢迎的蓝牙模块。在本篇文章中,我们将学习将蓝牙模块HC-05与德州仪器(TI)的MSP430 Launchpad开发板连接。在此示例中,我们将使用蓝牙终端android应用程序从智能手机控制MSP430开发板上的LED灯。 所需的材料 ● TI-MSP430 Launchpad开发板 ● HC-05蓝牙模块 ● 应用商店中的Bluetooth Terminal App HC-05蓝牙模块 HC-05是一款易于使用的蓝牙模块。它使用串行通信协议(USART)在设备之间进行通信。此模块有两种操作模式
[单片机]
使用MSP430 Launchpad<font color='red'>开发板</font>连接HC-05蓝牙模块控制LED灯
OK6410A 开发板 (八) 66 linux-5.11 OK6410A linux 并发 竞态 与 同步
并发执行单元引起的错误 : 竞态案例 a 初始化 为 0 A 内核进程 对 变量 a 加1 B 内核进程 对 变量 a 加1 a 现在 为 2 下面的顺序不会有问题 A load 内存中的a 进 寄存器 A 寄存器 自加 1 A store 寄存器中的值 进 内存 B load 内存中的a 进 寄存器 B 寄存器 自加 1 B store 寄存器中的值 进 内存 此时a的值为2 下面的顺序会有问题 A load 内存中的a 进 寄存器1 A 寄存器1 自加 1 B load 内存中的a 进 寄存器2 B 寄存器2 自加 1 A store 寄存器1中的值 进 内存 B store
[单片机]
基于C8051F015芯片在开发板上实现μC/OS-II的移植
在嵌入式应用中,使用RTOS的最主要原因是提高系统的可靠性,其次是提高开发效率、缩短开发周期。μC/OS-II 是一个基于优先级的抢占式实时内核,支持56 个用户任务,90%的代码使用标准的ANSI C语言书写,程序可读性强,移植性好,代码可固化,可裁剪,非常灵活。C8051F是美国Cygnal公司生产的与51系列兼容的微控制器,流水线指令结构70%的指令的执行时间为1个或2个系统时钟周期。当时钟频率为25MHz时,速度可达25MIPS,是一款不错的片上系统。 1 开发工具和运行环境 实现μC/OS-II的移植,要求所用的C编译器支持混合编程。KEIL C51可为众多的8051派生器件编程。我们选用的是KEIL7.02集成开发
[单片机]
基于C8051F015芯片在<font color='red'>开发板</font>上实现μC/OS-II的移植
OK6410A 开发板 (八) 46 linux-5.11 OK6410A vmalloc 的 消费者
grep = vmalloc( * -nr 编译后的工程中 使用 vmalloc 的 文件有 5个,分布在 4个一级目录中 drivers fs kernel net --- drivers/tty/vt/vt.c fs/kernel_read_file.c kernel/bpf/core.c net/core/net-sysfs.c net/netlink/af_netlink.c
[单片机]
官方STM32的NUCLEO开发板使用
概述:因工作需求,先买了stm32的NUCLEO开发板做测试板,本人使用的是L073RZ这块板子,也是第一次接触stm32,摸索状态。这里记录一下使用过程,做笔记的同时希望也可以对别人有点帮助。 1,准备 既然要使用这块板子,那么对这块板子我们肯定是需要基本了解一下的,怎么测试,如何测试,供电问题,调试问题我们都需要看看官方文档。 这里贴一个NUCLEO开发板手册下载地址http://www.stmcu.org/document/detail/index/id-214946.里面详细的说了开发板的功能,如何使用,原理图等,有不懂的不明白的查查这手册。 在手册的5.1节,就说了如何开始使用。我把原文贴下,顺便简单翻译
[单片机]
官方STM32的NUCLEO<font color='red'>开发板</font>使用
ok6410开发板交叉编译器的安装
1.上篇文章中我们说了已经在虚拟机里面的ubuntu12根目录下建立了 forlinx文件夹,现将arm-linux-gcc.4.3.2.tgz拷贝到forlinx中,我用的是上次建立好的xftp,相当爽啊 2. cd ../../ ls cd forlinx mkdir /usr/local/arm tar zxvf arm-linux-gcc-4.3.2.tgz -C /,注意这里的斜杠不要丢掉 这样解压到了 /usr/local/arm 然后运行这个命令 gedit /etc/profile 再把以下四行加入文件的头部(尾部我试了反正我的不管用,不知道为啥)
[单片机]
ok6410<font color='red'>开发板</font>交叉编译器的安装
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved