⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uboot_v2_1_0.tcl

📁 uboot在arm处理器s3c2410的移植代码
💻 TCL
字号:
##      Author: Xilinx, Inc.#      #      #      This program is free software; you can redistribute it and/or modify it#      under the terms of the GNU General Public License as published by the#      Free Software Foundation; either version 2 of the License, or (at your#      option) any later version.#      #      #      XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A#      COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS#      ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD,#      XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE#      FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING#      ANY THIRD PARTY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION.#      XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO#      THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY#      WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM#      CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND#      FITNESS FOR A PARTICULAR PURPOSE.#      #      #      Xilinx hardware products are not intended for use in life support#      appliances, devices, or systems. Use in such applications is#      expressly prohibited.#      #      #      (c) Copyright 2002-2004 Xilinx Inc.#      All rights reserved.#      #      #      You should have received a copy of the GNU General Public License along#      with this program; if not, write to the Free Software Foundation, Inc.,#      675 Mass Ave, Cambridge, MA 02139, USA.## Globalslappend drvlistset ltypes "../../../sw_services/uboot_v1_00_a/data/Ltypes"proc uboot_drc {lib_handle} {    puts "U-Boot DRC..."}proc generate {libname} {        global drvlist        # Get list of peripherals connected to uboot    set conn_periphs [xget_handle $libname "ARRAY" "connected_periphs"]    #lappend drvlist    if {[string compare -nocase $conn_periphs ""] != 0} {	set conn_periphs_elems [xget_handle $conn_periphs "ELEMENTS" "*"]	# For each periph	foreach periph_elem $conn_periphs_elems {	    set periph [xget_value $periph_elem "PARAMETER" "periph_name"]	    # 1. Get driver	    set drv [xget_swhandle $periph]	    set posn [lsearch -exact $drvlist $drv]	    if {$posn == -1} {		lappend drvlist $drv	    }	}		set file_handle [xopen_include_file "xparameters.h"]	puts $file_handle "\n/******************************************************************/\n"	puts $file_handle "/* U-Boot Redefines */"	puts $file_handle "\n/******************************************************************/\n"	close $file_handle		foreach drv $drvlist {	    set drvname [xget_value $drv "NAME"]	    	    #Redefines xparameters.h	    if {[string compare -nocase $drvname "uartns550"] == 0} {		xredefine_uartns550 $drv "xparameters.h"	    }  elseif {[string compare -nocase $drvname "emac"] == 0} {		xredefine_emac $drv "xparameters.h"	    }  elseif {[string compare -nocase $drvname "iic"] == 0} {		xredefine_iic $drv "xparameters.h"	    }	}    }        # define core_clock    xredefine_params $libname "xparameters.h" "CORE_CLOCK_FREQ_HZ"    # define the values for the persistent storage in IIC    xredefine_params $libname "xparameters.h" "IIC_PERSISTENT_BASEADDR" "IIC_PERSISTENT_HIGHADDR" "IIC_PERSISTENT_EEPROMADDR"}proc xget_corefreq {} {    set processor [xget_processor]     set name [xget_value $processor "NAME"]    puts "procname : $name"    set processor_driver [xget_swhandle [xget_value $processor "NAME"]]    puts "procdrv : $processor_driver"    if {[string compare -nocase $processor_driver ""] != 0} {	set arg "CORE_CLOCK_FREQ_HZ"	#set retval [xget_value $processor_driver "PARAMETER" $arg]	set retval [xget_dname [xget_value $processor_driver "NAME"] $arg]	return $retval    }}# procedure that adds # defines to xparameters.h as XPAR_argumentproc xredefine_params {handle file_name args} {        puts "xredfine ..."    # Open include file    set file_handle [xopen_include_file $file_name]    puts "args : $args"    foreach arg $args {	if {[string compare -nocase $arg "CORE_CLOCK_FREQ_HZ"] == 0} {	    set value [xget_corefreq]	    puts "corefreq : $value"	} else {	    set value [xget_value $handle "PARAMETER" $arg]	    puts "value : $value"	}		if {$value != ""} {	    set value [xformat_addr_string $value $arg]	    if {[string compare -nocase $arg "IIC_PERSISTENT_BASEADDR"] == 0} {		set name "PERSISTENT_0_IIC_0_BASEADDR"	    } elseif {[string compare -nocase $arg "IIC_PERSISTENT_HIGHADDR"] == 0} {		set name "PERSISTENT_0_IIC_0_HIGHADDR"	    } elseif {[string compare -nocase $arg "IIC_PERSISTENT_EEPROMADDR"] == 0} {		set name "PERSISTENT_0_IIC_0_EEPROMADDR"	    } else {		set name [string toupper $arg]	    }	    set name [format "XPAR_%s" $name]	    puts $file_handle "#define $name $value"	}    }    puts $file_handle "\n/******************************************************************/\n"    close $file_handle}# uart redefines...proc xredefine_uartns550 {drvhandle file_name} {        xredefine_include_file $drvhandle $file_name "uartns550" "C_BASEADDR" "C_HIGHADDR" "CLOCK_HZ" "DEVICE_ID"    }proc xredefine_emac {drvhandle file_name} {        xredefine_include_file $drvhandle $file_name "emac" "C_BASEADDR" "C_HIGHADDR" "C_DMA_PRESENT" "C_MII_EXIST" "C_ERR_COUNT_EXIST" "DEVICE_ID"    }proc xredefine_iic {drvhandle file_name} {    xredefine_include_file $drvhandle $file_name "iic" "C_BASEADDR" "C_HIGHADDR" "C_TEN_BIT_ADR" "DEVICE_ID"}#######################proc xredefine_include_file {drv_handle file_name drv_string args} {        # Open include file    set file_handle [xopen_include_file $file_name]        # Get all peripherals connected to this driver    set periphs [xget_periphs $drv_handle]         set pname [format "XPAR_%s_" [string toupper $drv_string]]        # Print all parameters for all peripherals    set device_id 0    set sub_periphs 1    foreach periph $periphs {	puts "$periph : $drv_string : $sub_periphs"	for {set i 0} {$i < $sub_periphs} {incr i} {	    foreach arg $args {		set name "${pname}${device_id}_"	    		if {[string compare -nocase "CLOCK_HZ" $arg] == 0} {		    set xdrv_string [format "%s%s" "X" $drv_string]		    set value [xget_dname $xdrv_string $arg]		    set name "${name}CLOCK_FREQ_HZ"		} else {		    if {[string match C_* $arg]} {			set name [format "%s%s" $name [string range $arg 2 end]]		    } else {			set name "${name}${arg}"		    }		    set value [xget_name $periph $arg]		}		if {[string compare -nocase "uartns550" $drv_string] == 0} {		    if {[string compare -nocase "C_BASEADDR" $arg] == 0} {			set value [format "(%s%s%s)" $value "+" "0x1000"]		    }		}		puts $file_handle "#define $name $value"		if {[string compare -nocase "DEVICE_ID" $arg] == 0} {		    incr device_id		}	    }	}    }		    puts $file_handle "\n/******************************************************************/\n"    close $file_handle}################################################### procedure post_generate# This generates the drivers directory for uboot# and runs the ltypes script##################################################proc post_generate {lib_handle} {        global drvlist        # Create U-Boot tree structure    set pwd [pwd]    set common_dir "uboot/board/xilinx/common"    set xilinx_enet_dir "uboot/board/xilinx/xilinx_enet"    set ml300_dir  "uboot/board/xilinx/ml300"        exec bash -c "mkdir -p $common_dir $xilinx_enet_dir $ml300_dir"        # Copy files for xilinx_ocp    xcopy_commonfiles    foreach drv $drvlist {	set drvname [xget_value $drv "NAME"]	set ver [xget_value $drv "PARAMETER" "DRIVER_VER"]	set ver [string map {. _} $ver]	set dirname [format "%s_v%s" $drvname $ver]		if {[string compare -nocase $drvname "emac"] == 0} {	    xcopy_emac $drv $dirname	} elseif {[string compare -nocase $drvname "iic"] == 0} {	    xcopy_iic $drv $dirname	}    }        # Call Ltypes Script here    set uboot "uboot"    xltype_file $uboot    # Move xparameters.h around    exec bash -c "cp ../../include/xparameters.h $ml300_dir"    # copy the whole U-Boot BSP to its final destination    set value [xget_value $lib_handle "PARAMETER" TARGET_DIR]    puts "TARGET_DIR : $value"    if {$value != ""} {        if {[file isdirectory $value] == 0} {            exec bash -c "mkdir -p $value"        }        exec bash -c "cp -Rp uboot/* $value"    }}proc xcopy_commonfiles {} {    global drvlist    set common_dir "uboot/board/xilinx/common"        foreach drv $drvlist {	set depends [xget_value $drv "OPTION" "DEPENDS"]	foreach dep $depends {	    puts "dep : $dep"	    if {[file isdirectory "../$dep"] == 1} {		exec bash -c "cp -f ../$dep/src/*.c $common_dir"		exec bash -c "cp -f ../$dep/src/*.h $common_dir"	    }	}    }    }proc xcopy_emac {drv_handle dirname} {    set emac "board/xilinx/xilinx_enet"    xcopy_dir $dirname $emac}proc xcopy_iic {drv_handle dirname} {    set iic "board/xilinx/xilinx_iic"    xcopy_dir $dirname $iic}proc xcopy_dir {srcdir dstdir} {        set dstdirname [format "%s%s" "uboot/" $dstdir]    if {[file isdirectory "../$srcdir"] == 1} {	# Copy files from src to dst	exec bash -c "mkdir -p $dstdirname"	exec bash -c "cp -f ../$srcdir/src/*.c $dstdirname"	exec bash -c "cp -f ../$srcdir/src/*.h $dstdirname"    } else {	puts "$srcdir does not exist ..."    }}proc xltype_file {filename} {    global ltypes    puts $filename    if {[file isdirectory $filename]} {	foreach entry [glob -nocomplain [file join $filename *]] {	    xltype_file $entry	}    } else {	exec bash -c "$ltypes $filename"    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -