bbb
sukhoi27smk
学习是为了探索这个世界的本质
展开
-
bbb u-boot mmc总线初始化分析
1. arch/arm/lib/ctr0.s.global _main_main: bl board_init_f2. arch/arm/lib/spl.cvoid __weak board_init_f(ulong dummy){ board_init_r(NULL, 0);}3. arch/arm/lib/原创 2015-01-26 00:00:02 · 2798 阅读 · 0 评论 -
/linux/include/linux/videodev.h
1 /* 2 * Video for Linux version 1 - OBSOLETE 3 * 4 * Header file for v4l1 drivers and applications, for 5 * Linux kernels 2.2.x or 2.4.x. 6 * 7 * Provides header转载 2015-03-01 22:51:10 · 5977 阅读 · 0 评论 -
bbb mmc驱动分析
1. drivers/mmc/host/omap_hsmmc.cstatic int __init omap_hsmmc_init(void){ /* Register the MMC driver */ return platform_driver_probe(&omap_hsmmc_driver, omap_hsmmc_probe);}stati原创 2015-01-26 00:39:06 · 1249 阅读 · 0 评论 -
bbb mmc_blk_probe 分析
bbb 的 emmc驱动在drivers\mmc\card\block.c,其mmc_dirver结构体如下,根据以往平台总线驱动模型的经验来看的话,内核里应该有mmc_devices结构体,并且其name也为"mmcblk",这样其probe函数将被调用,但是搜索整个内核文件并没有发现mmc_devices。现在我们分析一下mmc_blk_probe什么时候被调用。static原创 2015-01-25 20:18:04 · 2255 阅读 · 0 评论 -
linux中 probe函数的何时调用的?
linux中 probe函数何时调用的 所以的驱动教程上都说:只有设备和驱动的名字匹配,BUS就会调用驱动的probe函数,但是有时我们要看看probe函数里面到底做了什么,还有传递给probe函数的参数我们就不知道在哪定义(反正不是我们在驱动里定义的),如果不知道传递进的参数,去看probe函数总是感觉不求甚解的样子(你对系统不求甚解,系统也会对你的要求不求甚解的),心里转载 2015-01-25 20:49:45 · 651 阅读 · 0 评论 -
bbb u-boot do_mmcinfo
1. common/cmd_mmc.cstatic int do_mmcinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]){ mmc = find_mmc_device(curr_device); if (mmc) { mmc_init(mmc);原创 2015-01-26 01:00:52 · 1221 阅读 · 0 评论 -
linux中probe函数传递参数的寻找(下)
linux中probe函数传递参数的寻找(下) 通过追寻driver的脚步,我们有了努力的方向:只有找到spi_bus_type的填充device即可,下面该从device去打通,当两个连通之日,也是任督二脉打通之时。先从设备定义去查看,在mach-smdk6410.c中定义了硬件设备信息,从这作为突破口。/* for mx25lx*/static void转载 2015-01-25 20:48:09 · 899 阅读 · 0 评论 -
linux中probe函数中传递的参数来源(上)
linux中probe函数传递参数的寻找(上) 上一篇中,我们追踪了probe函数在何时调用,知道了满足什么条件会调用probe函数,但probe函数中传递的参数我们并不知道在何时定义,到底是谁定义的,反正不是我们在驱动中定义的(当然,驱动中也不会定义设备的详细信息),但也不是在我们设备信息定义时的结构体。这就相当于武林绝学中只打通了任脉,而督脉还没打通,要想成为武林高手还差转载 2015-01-25 20:47:35 · 794 阅读 · 0 评论 -
bbb sdk6 ll_rw_block分析
ll_rw_block是文件系统对下访问实际的块设备驱动的接口,应用程序对实际文件(非设备文件)的操作,最终都是通过文件系统来调用ll_rw_block来操作实际的存储设备的。当然ll_rw_block的实际作用远非一个接口那么简单,他里面对维护了一个读写请求队列,并且对队列里读写请求进行了优化,比如,对机械硬盘来说,使用了电梯算法,对队列里的读写请求进行优化,排序,合并等操作,提高了原创 2015-01-25 17:41:42 · 1997 阅读 · 0 评论 -
TI Sitara AM335x系统之AM335x uboot spl分析
本文转载自nidetech的Blog芯片到uboot启动流程 ROM → SPL→ uboot.img简介 在335x 中ROM code是第一级的bootlader。mpu上电后将会自动执行这里的代码,完成部分初始化和引导第二级的bootlader,第二级的bootlader引导第三级bootader,在ti官方上对于第二级和第三级的bootl转载 2014-12-28 22:11:39 · 1742 阅读 · 0 评论 -
解决bbb无法加载uImage问题
使用sdk6,emmc的烧写都完成后,uboot启动后,无法加载uImage。修改u-boot am335x_evm.h的CONFIG_EXTRA_ENV_SETTINGS 环境变量设置将mmcdev=0改为1即可原创 2015-01-03 22:33:42 · 919 阅读 · 0 评论 -
bbb 烧写脚本分析
ftp服务器地址,即CCS Uniflash的地址SERVER_IP="192.168.2.1"MLO u-boot.img uImage压缩文件的名称,即ftp服务器下载目录里的文件名BOOT_PARTITION="boot_partition.tar.gz"文件系统的名称,即ftp服务器下载目录里的文件名ROOTFS_PARTITION="rootf原创 2015-02-01 22:24:34 · 1530 阅读 · 0 评论 -
bbb u-boot 验证 emmc
参考"common/cmd_mmc.c"的查找emmc的代码,在mmc总线初始化函数后,遍历mmc总线,查找emmc并打印emmc信息。在"drivers/mmc/mmc.c"中的mmc_initialize函数的最后面添加我们的遍历函数int mmc_initialize(bd_t *bis){INIT_LIST_HEAD (&mmc_devices);cur_dev_n原创 2015-01-26 23:37:09 · 2396 阅读 · 0 评论 -
bbb sdk6编译流程
1. 编译用于ftp启动的镜像1) ubootmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=flash-restore am335x_evm_restore_flash_usbspl生成的u-boot.img在flash-restore目录下,拷贝到ftp目录下,并改名为u-boot-restore.img生成的u-boo原创 2015-01-27 23:33:59 · 1874 阅读 · 0 评论 -
用Crossdev安装MIPS交叉编译工具链
例如执行这样的安装命令:crossdev -S --ex-gdb --without-headers -t mipsel-unknown-linux-gnu首先,修改/etc/make.conf文件,在文件最后加上PORTDIR_OVERLAY=/usr/portage/(不然会报错没有设置PORTDIR_OVERLAY)然后,参考这个链接Gentoo Overlays:转载 2014-12-24 11:55:15 · 1405 阅读 · 0 评论 -
gentoo 安装时的网络配置
在变换根目录(chroot)前,需要拷贝dns文件cp -L /etc/resolv.conf/mnt/gentoo/etc/resolv.conf 在变换根目录(chroot)后1. 修改主机名称 nano -w /etc/conf.d/hostname2. 修改工作组名称 nano -w /etc/conf.d/domainname rc原创 2014-12-23 11:21:10 · 1198 阅读 · 0 评论 -
bbb sd6 无e2 修改
1. u-boot修改 board/ti/am335x/board.c void s_init(void)和static int read_eeprom(void)这两个函数要从e2中读取数据,只需要把原版的bbb的e2中的数据读出来并添充到相应的数据结构里即可。 数据如下: unsigned char e2_data[80] = {0xaa, 0x55, 0x原创 2015-01-28 00:08:33 · 1123 阅读 · 0 评论 -
__attribute__ 之weak,alias属性
Weak Alias 跟 Weak Reference 完全没有任何关系,不过是我在看到 Weak Reference 的时候想到的而已。Weak Alias 是 gcc 扩展里的东西,实际上是函数的属性。这个东西在库的实现里面可能会经常用到,比如 glibc 里面就用了不少。抄录一段 gcc 手册里面的话解释下函数属性是干啥的,In GNU C, you declare转载 2015-01-26 22:39:48 · 1367 阅读 · 0 评论 -
bbb 启动文件
/etc/init.d/rc原创 2015-03-01 23:00:35 · 1127 阅读 · 0 评论