精华内容
下载资源
问答
  • imx6ull移植uboot(二)修改LCD

    千次阅读 2020-03-03 12:59:17
    ~/linux/uboot/uboot-imx-rel_imx_4.1.15_2.1.0_ga/board/freescale/mx6ull_fire_emmc 修改mx6ull_fire_emmc.c文件,输入指令编辑文件 vim mx6ull_fire_emmc.c 查找display字符段,在vim的命令模式下输入?display...

    一、打开上一章修改完成的板级文件夹
    ~/linux/uboot/uboot-imx-rel_imx_4.1.15_2.1.0_ga/board/freescale/mx6ull_fire_emmc
    修改mx6ull_fire_emmc.c文件,输入指令编辑文件

    vim mx6ull_fire_emmc.c
    

    查找display字符段,在vim的命令模式下输入?display回车结果如下图所示:
    在这里插入图片描述
    修改如图所示结构体(图中已修改),其中
    name: LCD 名字,要和环境变量中的 panel 相等。
    xres、 yres: LCD X 轴和 Y 轴像素数量。
    pixclock:像素时钟,每个像素时钟周期的长度,单位为皮秒。
    left_margin: HBP,水平同步后肩。
    right_margin: HFP,水平同步前肩。
    upper_margin: VBP,垂直同步后肩。
    lower_margin: VFP,垂直同步前肩。
    hsync_len: HSPW,行同步脉宽。
    vsync_len: VSPW,垂直同步脉宽。
    vmode: 大多数使用 FB_VMODE_NONINTERLACED,也就是不使用隔行扫描。
    根据LCD手册可知屏幕要求的像素时钟为 50MHz,因此:
    pixclock=(1/50000000)*10^12=20000
    打开mx6ull_fire_emmc.h文件修改panel 的值(文件路径为~/linux/uboot/uboot-imx-rel_imx_4.1.15_2.1.0_ga/include/configs),同样与.c文件中name设置一样即可,修改完如下图所示:
    在这里插入图片描述
    重新编译,烧写uboot到sd卡中,插入开发板开机,观察图像显示是否正常
    在这里插入图片描述
    连接串口观察uboot的打印信息如下图:
    在这里插入图片描述
    其中display字符段显示的内容与上述中name设置的内容一致

    展开全文
  • JZ2440移植UBOOT 2012.04.1

    2019-04-10 09:17:37
    在前面,了解了Bootloader的作用以及从0写一个Bootloader之后,最近花了差不多一个星期学习韦东山老师的JZ2440移植UBOOT 2012.04.1,看了视频和参考博客园NQian的博客进行学习。我制作的最新补丁:...

    前言

    在前面,了解了Bootloader的作用以及从0写一个Bootloader之后,最近花了差不多一个星期学习韦东山老师的JZ2440移植UBOOT 2012.04.1,看了视频和参考博客园NQian的博客进行学习。我制作的最新补丁:https://github.com/sanjaywu/UBOOT_2012.04.1_JZ2440_patch


    一、JZ2440移植UBOOT 2012.04.1笔记

    以下笔记全部来自博客园NQian的笔记,讲得非常详细,我也是参照他的博客进行学习的,收益很大,点击跳转可以直接到他的博客看。

    1.移植uboot-分析uboot启动流程(详解)
    2.移植uboot-添加2440单板,并实现NOR、NAND启动
    3.移植uboot-使板卡支持nor、nand
    4.移植uboot-使uboot支持DM9000网卡
    5.移植uboot-设置默认环境变量,裁剪,并分区
    6.移植uboot-支持yaffs烧写,打补丁

    二、和韦东山老师移植存在的区别

    我是参考博客园NQian的笔记进行学习,里面主要的不同是在调用第2阶段的代码relocate_code的处理上有些不一样以及重新设置栈。

    1、韦东山老师的处理方法

    (1)、在board.c中修改函数board_init_f,将该函数改为有返回值,修改函数为:unsigned int board_init_f(ulong bootflag),用于返回id(存放 gd_t结构体的首地址)。


    (2)、将board_init_f函数后面的relocate_code(addr_sp, id, addr);注释去掉。


    (3)、在include\common.h里面把void board_init_f (ulong) __attribute__ ((noreturn));改为unsigned int board_init_f(ulong bootflag)


    (4)、根据前面三个步骤,再来调用第二阶段代码board_init_r,代码如下:

    /* Set stackpointer in internal RAM to call board_init_f */
    call_board_init_f:
    	ldr	r0,=0x00000000
    	bl	board_init_f
    
    	/* unsigned int的值存在r0里, 正好给board_init_r */
    	ldr r1, _TEXT_BASE
    	ldr sp, base_sp 			/* 重新设置栈 */
    
    	/* 调用第2阶段的代码 */
    	bl board_init_r
    

    (5)、base_sp定义如下:

    /* IRQ stack memory (calculated at run-time) + 8 bytes */
    .globl IRQ_STACK_START_IN
    IRQ_STACK_START_IN:
    	.word	0x0badc0de
    

    后面添加:

    .globl base_sp
    base_sp:
    	.long 0
    

    (6)把relocate_code全部去掉:

    /*
     * void relocate_code (addr_sp, gd, addr_moni)
     *
     * This "function" does not return, instead it continues in RAM
     * after relocating the monitor code.
     *
     */
    	.globl	relocate_code
    relocate_code:
    	mov	r4, r0	/* save addr_sp */
    	mov	r5, r1	/* save addr of gd */
    	mov	r6, r2	/* save addr of destination */
    
    

    二、我和NQian的处理方法

    不删除addr_sp, id, addr还是通过relocate_code函数来处理、不返回id(存放 gd_t结构体的首地址),也不用定义全局变量base_sp,总之就是函数board_init_f处理不按照上面提到的韦东山老师的处理方法,start.S里面,在call_board_init_f前面的和韦东山老师一样,后面的处理如下。

    (1)、在start.S里面,修改看如下代码:

    /* Set stackpointer in internal RAM to call board_init_f */
    call_board_init_f:
    	
    	ldr	r0,=0x00000000
    	bl	board_init_f
    
    
    /* void relocate_code (addr_sp, gd, addr_moni)*/
    .globl      relocate_code
    relocate_code:
    
           mov r4, r0      	/* 保存 addr_sp到r4 */       
           mov sp, r4	   /* r4赋给sp来达到重新设置栈的目的 */
           mov r0, r1      	/* save addr of gd */
           mov r1, r2      	/* save addr of destination */
           bl  board_init_r /* 进入uboot第二阶段代码 */
    

    (2)、由后面的relocate_code(addr_sp, id, addr);函数可知:


    mov r4, r0:保存 addr_sp到r4 ;
    mov sp, r4:4赋给sp来达到重新设置栈的目的 ;
    mov r0, r1:r1是id(存放 gd_t结构体的首地址),将它赋给r0来作为board_init_r的第一个入口参数;
    mov r1, r2:r2是addr,将它赋给r1来作为board_init_r的第二个入口参数。


    (3)、board_init_r函数为:

    void board_init_r(gd_t *id, ulong dest_addr)
    

    (4)、通过以上就能够实现重新设置栈了,以及各参数的设置。


    三、我移植时遇到的问题和解决方法


    1、报错undefined reference to nand_info

    这是在u-boot之修改代码支持NAND启动时编译出现的错误。

    解决方法:

    • 在smdk2440.h里面屏蔽掉://#define CONFIG_YAFFS2
    • make distclean
    • 配置 make smdk2440_config
    • make

    2、按照流程来,移植支持NAND启动后无反应

    在支持NAND启动的移植上,修改之后,下载代码,重新上电复位,发送NAND启动的时候没任何信息打印处理等反应。后来发现我是没删除掉relocate_code后面的代码。

    解决方法是删除如下代码,因为前面我们已经重新设置栈了,也清除bss段了:

    
    	/* Set up the stack						    */
    stack_setup:
    	mov	sp, r4
    
    	adr	r0, _start
    	cmp	r0, r6
    	beq	clear_bss		/* skip relocation */
    	mov	r1, r6			/* r1 <- scratch for copy_loop */
    	ldr	r3, _bss_start_ofs
    	add	r2, r0, r3		/* r2 <- source end address	    */
    
    copy_loop:
    	ldmia	r0!, {r9-r10}		/* copy from source address [r0]    */
    	stmia	r1!, {r9-r10}		/* copy to   target address [r1]    */
    	cmp	r0, r2			/* until source end address [r2]    */
    	blo	copy_loop
    
    #ifndef CONFIG_SPL_BUILD
    	/*
    	 * fix .rel.dyn relocations
    	 */
    	ldr	r0, _TEXT_BASE		/* r0 <- Text base */
    	sub	r9, r6, r0		/* r9 <- relocation offset */
    	ldr	r10, _dynsym_start_ofs	/* r10 <- sym table ofs */
    	add	r10, r10, r0		/* r10 <- sym table in FLASH */
    	ldr	r2, _rel_dyn_start_ofs	/* r2 <- rel dyn start ofs */
    	add	r2, r2, r0		/* r2 <- rel dyn start in FLASH */
    	ldr	r3, _rel_dyn_end_ofs	/* r3 <- rel dyn end ofs */
    	add	r3, r3, r0		/* r3 <- rel dyn end in FLASH */
    fixloop:
    	ldr	r0, [r2]		/* r0 <- location to fix up, IN FLASH! */
    	add	r0, r0, r9		/* r0 <- location to fix up in RAM */
    	ldr	r1, [r2, #4]
    	and	r7, r1, #0xff
    	cmp	r7, #23			/* relative fixup? */
    	beq	fixrel
    	cmp	r7, #2			/* absolute fixup? */
    	beq	fixabs
    	/* ignore unknown type of fixup */
    	b	fixnext
    fixabs:
    	/* absolute fix: set location to (offset) symbol value */
    	mov	r1, r1, LSR #4		/* r1 <- symbol index in .dynsym */
    	add	r1, r10, r1		/* r1 <- address of symbol in table */
    	ldr	r1, [r1, #4]		/* r1 <- symbol value */
    	add	r1, r1, r9		/* r1 <- relocated sym addr */
    	b	fixnext
    fixrel:
    	/* relative fix: increase location by offset */
    	ldr	r1, [r0]
    	add	r1, r1, r9
    fixnext:
    	str	r1, [r0]
    	add	r2, r2, #8		/* each rel.dyn entry is 8 bytes */
    	cmp	r2, r3
    	blo	fixloop
    #endif
    
    clear_bss:
    #ifndef CONFIG_SPL_BUILD
    	ldr	r0, _bss_start_ofs
    	ldr	r1, _bss_end_ofs
    	mov	r4, r6			/* reloc addr */
    	add	r0, r0, r4
    	add	r1, r1, r4
    	mov	r2, #0x00000000		/* clear			    */
    
    clbss_l:str	r2, [r0]		/* clear loop...		    */
    	add	r0, r0, #4
    	cmp	r0, r1
    	bne	clbss_l
    
    	bl coloured_LED_init
    	bl red_led_on
    #endif
    

    3、移植完成,烧写u-boot之后,发现LCD只显示一半且模糊

    解决方法:
    \board\samsung\smdk2440中的board_init函数将gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;改为gd->bd->bi_arch_number = MACH_TYPE_S3C2440;

    展开全文
  • 从零开始移植uboot

    2021-03-28 12:58:06
    2.通过uboot源码主目录下的README文件了解各个子目录的作用,大概如下: /arch Architecture specific files /arc Files generic to ARC architecture /arm Files generic to ARM architecture /avr32 Files ...

    1.下载uboot源码:www.denx.de/wiki/U-boot

    2.通过uboot源码主目录下的README文件了解各个子目录的作用,大概如下:

    /arch            Architecture specific files
      /arc            Files generic to ARC architecture
      /arm            Files generic to ARM architecture
      /avr32        Files generic to AVR32 architecture
      /blackfin        Files generic to Analog Devices Blackfin architecture
      /m68k            Files generic to m68k architecture
      /microblaze        Files generic to microblaze architecture
      /mips            Files generic to MIPS architecture
      /nds32        Files generic to NDS32 architecture
      /nios2        Files generic to Altera NIOS2 architecture
      /openrisc        Files generic to OpenRISC architecture
      /powerpc        Files generic to PowerPC architecture
      /sandbox        Files generic to HW-independent "sandbox"
      /sh            Files generic to SH architecture
      /sparc        Files generic to SPARC architecture
      /x86            Files generic to x86 architecture
    /api            Machine/arch independent API for external apps
    /board            Board dependent files
    /common            Misc architecture independent functions
    /configs        Board default configuration files
    /disk            Code for disk drive partition handling
    /doc            Documentation (don't expect too much)
    /drivers        Commonly used device drivers
    /dts            Contains Makefile for building internal U-Boot fdt.
    /examples        Example code for standalone applications, etc.
    /fs            Filesystem code (cramfs, ext2, jffs2, etc.)
    /include        Header Files
    /lib            Library routines generic to all architectures
    /Licenses        Various license files
    /net            Networking code
    /post            Power On Self Test
    /scripts        Various build scripts and Makefiles
    /test            Various unit test files
    /tools            Tools to build S-Record or U-Boot images, etc.

    其中移殖uboot会涉及到的子目录有:

    /arch 包含特定芯片架构独有的初始化代码,每种架构有独立的子目录管理,可以删除其他芯片架构目录,只保留所目标芯片架构的目录(移植不需要修改)

    /api 包含了各种芯片架构提供给外部调用的代码(移植不需要修改)

    /board 包含了相关开发版的独立驱动代码,开发版相关代码有一个独立的子目录管理(移植uboot我们需要在此目录下增加我们开发版独立目录,并编写板子相关的驱动代码)

    /include/configs 包含开发版的独立配置头文件(移植uboot我们需在此目录增加我们开发自己的配置头文件)

    /configs 包含很多开发版的配置文件,文件的作用是:配置uboot的编译规则,(1)配置目标开发版  (2)配置uboot所包含的功能模块(移植uboot要再次目录下增加我们开发版独立的配置文件)

    3.在uboot中新增自己的开发版,官方的uboot只支持他们自己的开发版,想要uboot支持自己的开发版那么就需要用户自己在uboot相应位置中增用户开发板的相关代码:

             (1) 在/configs目录中新增开发版的配置文件,uboot所支持的每一款开发版都有自己的配置文件,放在/configs目录中,我们要uboot支持我们的开发版,那么就需要

                  在这个目录添加我们开发版的配置文件user_board_defconfig,配置文件的内容主要有:配置cpu架构、配置目标板名称、配置目标版源码路径等

                   一般做法:复制相似板子的配置文件重命名为user_board_defconfig,然后修改文件中的内容,具体如下:

                                    CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/user_board/imximage.cfg,MX6ULL_EVK_EMMC_REWORK" //板子源码目录下的.cfg文件
                                    CONFIG_ARM=y
                                    CONFIG_ARCH_MX6=y
                                    CONFIG_TARGET_USER_BOARD=y     //修改为目标版名称
                                    CONFIG_CMD_GPIO=y

           (2)在/include/configs 中增加我们开发的配置头文件user_board.h(此文件作为uboot配置文件之一会被/configs中的配置文件包含)

                    一般做法:复制相似板子的配置文件重命名为user_board.h,然后修改文件中的内容,具体如下:

                                   1)修改board_name.h文件的名称为user_board.h(如果板子差异大,需要修改此文件,一般不用改)

           (3)在/board中增加开发版板驱动代码(新建一个目录user_board,在其中增加板子驱动代码)

                  一般做法:复制相似板子的驱动代码目录,重命名为user_board,然后修改目录下相关文件的文件名和文件内容,具体如下:

                                   1)修改board_name.c文件的名称为user_board.c

                                  2)修改Makefile中目标依赖: obj -y := board_name.0  -->  obj -y := user_board.o

                                  3)修改Kconfig文件为以下内容:

                                                            if TARGET_USER_BOARD   //修改为自己的

                                                            config SYS_BOARD
                                                                default "user_board"   //修改为自己的

                                                            config SYS_VENDOR
                                                                default "freescale"     //修改为自己的

                                                            config SYS_SOC
                                                                default "mx6" 

                                                            config SYS_CONFIG_NAME
                                                                default "user_board"     //修改为自己的

                                                            endif

                                   4)修改.cfg文件: 

                                                    PLUGIN    board/board_name/plugin.bin 0x00907000  -->  PLUGIN    board/user_board/plugin.bin 0x00907000

     

                                  5)修改MAINTAINERS文件为以下内容:

                                                 MX6ULLEVK BOARD
                                                 M:    Peng Fan <peng.fan@nxp.com>
                                                 S:    Maintained
                                                 F:    board/user_board
                                                 F:    include/configs/user_board.h
                                                 F:    configs/user_board_defconfig

     

           (4)在uboot的图形配置界面加入我们的开发版,uboot支持图形配置,如果想要要在图形配置界面能配置我们的开发版,就需要在图形配置界面文件中增加我们的

                   开发版选项(图形配置界面文件在/arcg/芯片所在目录/Kconfig),增加内容如下:

                   config TARGET_USER_BOARD    //目标板命名

                             bool "support user_board"    //目标板名

                             select CPU_TYPES             //选择cpu类型

                            ...                                          //等等

                   source "board/user_board/Kconfig"   //设置目标板图形化配置源

                 

    4.配置uboot,uboot其实就是一个巨大的代码库,它包含了支持各种芯片各种开发版的代码,配置uboot的其实就是配置这些代码的编译规则,目的在于只编译“目标芯片和目标开发版”所需的代码,执行“make user_board_defconfig” 配置uboot即可完成uboot的配置(配置uboot其实就是根据开发版的配置文件去生成一个 .config的文件,最后根据.config去编译uboot)

               一般做法:   make distclean  //清除原先的配置

                                   make user_board_defconfig  //配置uboot为目标版uboot

                                   make                    

                                 (注意:需要先在顶层Makefile中指定编译工具链选项:CROSS_CONPILE 和 CPU架构:ARCH)

                其他做法:如果不想修改Makefile,可以在编译时指定

                                 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
                                 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- user_board_defconfig
                                 make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

                                (也可以将以上内容写成脚本直接运行)

     

    5.以上已经完成了向uboot添加用户开发版的全部操作,如果板子可以正常启动,那么就算是完成了uboot的移植操作,但是往往我们用户自己的开发版会与官方的开发有些差异,我们需要针对这些差异去做相应的修改,具体需要修改什么呢?我们可以从uboot的启动流程找到思路:

            uboot启动的大致流程为无外乎:

                    (1)初始化芯片的相关寄存器,进入正常的工作模式(uboot下一般为svc模式)

                    (2)初始化板级外设(一般包括 硬盘初始化,内存初始化,串口初始化,屏幕初始化,网卡初始化,等)

                    (3)进入uboot命令系统

           由于我们移植uboot时会使用与我们开发版相同芯片的开发版作为参考,所以步骤芯片启动相关的代码是一样的,不需要修改。所有的修改都是步骤(2)中的内容:

           结合uboot的启动流程(详见README):

                    uboot 从arch/.../start.S 开始执行,执行的代码顺序如下:

                    (1)lowlevel_init    //芯片执行的函数,进入次函数后直接调用board_init_f()

                    (2)board_init_f    //初始化 内/外部SDRAM,串口(堆栈在sram中,此时可以开始使用全部变量,但是由于BSS段还没生效,所以不能使用全局静态变量,

                             只能使用使用栈变量和全局变量)

                    (3)board_init_r   //global_data is available   SDRAM is available  BSS is available  execution eventually continues to main_loop()

              在(2)中,我们一般需要修改内容有 串口的初始化,外部SDRAM的初始化,内部SDRAM是芯片的资源,所以代码是一样的,不需要修改.

              完成(2)中的修改后,程序就会执行到main_loop,在main_loop中就可以开始执行c代码了,此后就开始了板上各种外设的初始化代码了,如:初始化ddr

                   nand flash、emmc、网卡、LCD等。

                      (4) 修改板级外设的驱动代码(flash、emmc、网卡、lcd等),这些外设驱动代码就写在我们所添加/board/user_coard/user_board.c 和

                               /include/configs/user_board.h中

      总结5:在完成向uboot中添加我们用户自己的开发版后,为了使板子能正常运行,我们还需要修改以下地方:

                    (1)arch/.../start.S中的board_init_f函数

                    (2)根据板子外设差异修改 /board/user_coard/user_board.c 和 /include/configs/user_board.h 中的代码

     

     

     

     

     

     

     

     

         

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 1)LCD的背光源有2种设计。一种是简单设计,背光只能点亮和熄灭两种状态,不能调亮度;另一种设计类似手机屏幕可以调节亮度。第一种设计很简单,就是开和关。第二种模式比较复杂,需要一个额外的PWM调光IC来支持,...

    1.背光电路分析

    1)LCD的背光源有2种设计。一种是简单设计,背光只能点亮和熄灭两种状态,不能调亮度;另一种设计类似手机屏幕可以调节亮度。第一种设计很简单,就是开和关。第二种模式比较复杂,需要一个额外的PWM调光IC来支持,X210的LCD模组上使用MP3202芯片来做调光。

    2)分析原理图和MP3202的数据手册,可以得出结论:

    第一:PWMTOUT0(GPD0_0)接在了IC的FB引脚上,SoC应该通过该引脚输出一个频率合适的PWM波形给调光IC,这个波形的占空比就会控制MP3202输出的电流大小,从而控制屏幕亮度。

    第二:L_DISP(DISP、SYS_OE、GPF3_5)接在了MP3202的EN引脚上,SoC应该给该引脚一个高电平来让背光工作,或者给一个低电平来让背光不工作。

    3)综合分析:背光要点亮,要同时满足以上两个条件。GPD0_0要输出低电平或者PWM信号,同时GPF3_5要输出一个高电平。一般来说我们在uboot中都把GPD0_0设置成输出模式然后输出低电平来点亮背光。

    2.X210ubootLCD代码分析

    1)在uboot-jiuding/board.c中init_sequence中的display_banner中的open_backlight函数中给GPF3_5输出高电平。但是这个其实是可以省略的,注释掉这一句uboot的LCD显示照样正常的,主要原因是后面LCD操作的部分还会再做一遍的。

    2)真正的初始化LCD系统并且显示logo是在start_armboot函数的后段的x210_preboot_init中。这个函数纯粹是九鼎在移植时添加的。如果我们自己移植uboot可以考虑自己去添加。

    3.LCD驱动mpadfb.c分析

    1)fb_init函数给framebuffer相关的数据结构赋值。左值的info是一个结构体,这个结构体描述fb驱动中的硬件设备参数的,右值的lcd是自己定义的一个数据结构,里面的值都是我们人为配置给驱动体系的。

    2)lcd_port_init看名字是lcd端口的初始化,端口就是GPIO,所以这个函数是在初始化LCD相关的SoC的引脚。

    3)lcd_reg_init看名字是LCD的寄存器的初始化,就是SoC的LCD控制器中的那些寄存器的初始化。

    4)以上三个函数调用执行完后,LCD初始化就结束了。然后向LCD写东西就能显示了。但是你要注意背光是否被点亮了。后面剩下的事情就是写东西和开背光两个了。

    5)display_logo(&s5pv210_fb);这个函数负责把logo图片写到LCD的fb中去。backlight_brigness_init(1);负责开背光。

    4.解决新版开发板X210BV3Slogo显示问题

    1)用旧版本的uboot.bin下载到新版开发板中,发现能工作,但是屏幕logo显示不正常(屏幕下面有一条显示不正常的,然后logo是显示出来的但是不在屏幕正中间)。

    2)原因分析:主要原因新版开发板LCD屏幕的分辨率是1024*600而旧版分辨率是800*480.所以旧版本的uboot在新版开发板上运行时,就会造成屏幕填充不满(现象就是下面有一排显示不正常的),还会造成显示内容位置偏移,本来在中间结果偏左了。

    3)解决方案:很简单,在uboot中将LCD的参数部分,分辨率改成1024*600即可。

    5.logo显示代码分析

    1)logo是以工具将图片做成二进制的字符串数据。

    2)显示时通过计算将logo代表的矩形放在屏幕正中央

    3)绘图时先绘制背景色,然后在logo矩形中写入logo图片内容即可。

    6.移植

    移植九鼎官方的开机启动画面。

    在display_banner中添加点亮背光的代码,并打印:BACKLIGNT ON

    board_init_r添加LCD初始化的代码:

     

    在goni.c添加初始化代码:

    复制驱动:

    复制头文件到include下:

    在mpadfb.c添加如下代码:

    7.结果

    展开全文
  • 文章目录移植中debug方式uboot中差异点第一步第二步第三步第四步试验 移植中debug方式 1.增加led点灯代码 2.在确定系统时钟初始化完成后,可以使用串口进行调试 (原厂会使用ds-5连接jtag进行单步调试,比较便捷) ...
  • 荔枝派nano上手笔记(一)移植Uboot

    万次阅读 2019-02-11 23:11:38
    那时对Linux基本不太熟悉,只会一些简单的操作,经过了快一个月的学习,现在感觉自己已经可以来试着玩玩了,同时也是为开学上手驱动开发打些基础,今天玩了玩nano这块板子,在板子上移植Uboot。 一、硬件参数  ...
  • 免费嵌入式Linux视频中,好看毕业班。包括了自己写一个能启动内核的Bootloader; 移植UBOOT和移植内核,移植2期驱动到内核。 其中移植UBOOT难也能学到东西。...
  • uboot版本:uboot-imx-rel_imx_4.1.15_2.1.0_ga uboot官方下载地址: 参考内容:正点原子 一、添加开发板的配置文件 打开uboot根目录下的configs文件夹,复制mx6ull_14x14_evk_emmc_defconfig文件并重命名mx6ull_...
  • 上一节已经分析到了uboot的board_init_r函数,并且把两个参数传递给它 /* call board_init_r(gd_t *id, ulong dest_addr) */ /* gd的 地址和 当前新的uboot的起始地址传参给board_init_r */ mov r0, r9 /* gd_...
  • /* 进入 uboot 命令行中 */ cli_loop(); panic("No CLI available"); } 1.1.1、cli_init void cli_init(void) { #ifdef CONFIG_HUSH_PARSER /* 定义了 */ u_boot_hush_start(); #endif #if defined...
  • uboot移植

    2018-09-28 15:58:28
    关于TQIMX6Q开发板移植uboot的记录,以及搜索的资料。
  • 接着第四节的继续分析,下面的是整个uboot前半部分的核心。 /* * entry point of crt0 sequence */ ENTRY(_main) /* * Set up initial C runtime environment and call board_init_f(0). */ #if defined...
  • 移植U-BOOT到S3C2410X并用SKYEYE仿真 本人初学u-boot,一下是我的一点实践:如果你有什么问题,相互交流学习。如果你想了解更多UBOOT可以到我空间看看其他bootloader文档。 原博客地址:...
  • 最近在学习uboot移植,也看过很多文章,但多多少少都有些不尽人意的地方,自己手动移植也出现过种种问题。尤其是不能对移植的过程有很好的理解,基于这个原因,我打算深入学习一下uboot移植过程,并对移植过程...
  • JZ2440平台移植uboot 2016.11(二)

    千次阅读 2018-01-15 15:18:54
    本次梳理uboot 2016.11 在SMDK2410平台上的代码执行流程。 代码从arch/arm/cpu/Arm920t/start.S开始 1. 设置CPU工作在SVC模式; 2. 禁止开门狗和所有中断; 3. 设置CLK; 4. 设置I/D cache, 禁用MMU 5. 调用...
  • tiny4412移植uboot-2019-01(三)

    千次阅读 2019-04-23 18:18:00
    开发环境:win7 64位 + Ubuntu16.04 64位 ...工具链:友善之臂提供的 arm-linux-gnueabihf- (gcc version 6.3.0) //低版本的工具编译不了最新的uboot移植的u-boot版本:u-boot-2019-01 git仓库地址:https:/...
  • OK6410移植UBOOT 2012.10全部过程

    千次阅读 2012-11-25 20:29:03
    经过差不多一个月的移植uboot2012.10 已经在OK6410开发板上运行起来。 主要实现的功能有DNW下载,LCD现实,DM9000,MMC驱动,NAND等等。 启动方式有: 1.SDRAM运行,需要先把OK6410_SDboot.nb0烧录到SD卡上,...
  •   开发环境: 单板:TINY4412-1611 ...uboot版本:uboot_tiny4412-20130729 内核版本:linux-3.5-20170221 busybox版本:busybox-1.20.0   【注】 1、本文只用于移植,不会讲解其中原理。若读者希望了...
  • 接下来是为UBOOT增加驱动。 1) NOR FALSH: TQ2440的NOR FLASH和UBOOT源文件中用到的AM29LV800相似,只需在/include/configs/TQ2440.h里作一些改动即可。具体参考网上教程。 2) 网卡: 网卡DM9000的驱动在...
  • 本节中,试着梳理 uboot 的内存分配结构. 内存分配从arch/arm/lib/crt0.S中的_main函数开始 第一部分内存分配 ldr sp, =(CONFIG_SYS_INIT_SP_ADDR) #sp = 0x30000000 + 0x1000 mov r0, sp bl board_init...
  • 原文链接:...如果你想了解更多UBOOT可以到我空间看看其他bootloader文档。 原博客地址:http://student.csdn.net/space.php 一. 源码准备 a) U-BOOT源代码u-boot-2009.06-rc3.tar.bz2 官方最新版 b)
  • uboot在ARMer9开发系统上跑起来,目前只需要关注如下的硬件区别,解决了下面这个问题,uboot就可以在ARMer9开发系统上正常地从串口输出,进入提示符。很多命令都可以使用,当然有些命令需要做修改。 SMDK2410...
  • Linux内核移植 part2:uboot lcd驱动

    千次阅读 2017-03-10 23:35:18
    这次驱动一块显示屏,历时两天时间,也许是感到倦了,这篇移植文档就当终结吧。关于Linux下的framebuffer驱动就不移植了,在已有的框架下,把配置好的参数添加进去即可。一 硬件介绍显示屏为tsc2007,带电阻式触摸。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,631
精华内容 1,052
关键字:

lcd移植uboot