欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    PCB貼片時,需要出一份坐標文件給貼片廠。相信很多人都會出這份坐標文件,但是你們可能沒有發現這些坐標文件有一些缺點陷,就是坐標文件里有些不需要貼的元器件和測試點都出現在里面,這樣的坐標文件看起來很混亂。如下圖所示。

    經過一番摸索,我找到了一個方法,從PCB里導出來的坐標文件,里面只有pcb需要貼的元器件,沒有多余的測試點和NC器件,看起來就很簡潔明了。下面具體講解一下這個方法。

    第一步,先從導出PCB的BOM,并整理好。

    第二步,打開腳本編輯器,編寫以下代碼。

    Sub Main

    tempFile = DefaultFilePath & "\temp.txt"

    Open tempFile For Output As #1

    'Output table header

    For i = 0 To UBound(Columns)

    OutCell Columns(i)

    Next

    Print #1

    Dim xl As Object

    Dim S_Components As String

    Dim LastRow1 As Long

    Set xl= GetObject(,"Excel.Application")

    x1="D:\DL020-MAIN-PCB-BOM V01_20200514.xlsx"

    'CreateObject("Wscript.Shell").Run ("D:\DL020-MAIN-PCB-BOM V01_20200514.xlsx")

    'LastRow1 = xl.ActiveSheet.Range("A65536").End(xlUp).Row

    'On Error Resume Next

    'MsgBox LastRow1

    For i= 4 To 200

    If xl.ActiveSheet.cells(i,5)<>"" Then

    S_Components =xl.ActiveSheet.cells(i,5)

    On Error Resume Next

    ActiveDocument.SelectObjects(plogObjectTypeAll, "", False)

    S_Components = Replace$(S_Components, Chr$(9), " ")

    ActiveDocument.SelectObjects(plogObjectTypeComponent, S_Components, True)

    Set parts = ActiveDocument.GetObjects(plogObjectTypeComponent,"",True)

    For Each part In parts

    OutCell part.PartType

    OutCell part.Name

    OutCell part.Decal

    OutCell part.Pins.Count

    OutCell ActiveDocument.LayerName(part.layer)

    OutCell part.Orientation

    OutCell Format(part.PositionX, "0.000")

    OutCell Format(part.PositionY, "0.000")

    OutCell Format(part.IsSMD, "Yes/No")

    OutCell Format(part.Glued, "Yes/No")

    Print #1

    Next part

    End If

    Next i

    Close #1

    ExportToExcel

    End Sub

    第三步,運行腳本,就可以導出我們想要的坐標文件,里面只有PCB需要貼的元器件的坐標信息。

    平臺:jz2440

    作者:莊澤彬

    說明:linux系統移植

    交叉編譯工具:arm-linux-gcc (GCC)4.3.2

    linux:linu3.4.2

    PC環境:ubuntu18.04

    一、kernel的編譯和燒錄:

    下載linux-3.4.2版本進行移植,下載鏈接:https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/

    修改頂層Makefile,設置為arm架構,以及設置交叉工具鏈

    zhuang@zhuang:~/project/3-jz2440/systems/linux-3.4.2$ git diff .
    diff --git a/Makefile b/Makefile
    index 901a9557..9cc1639a 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -192,8 +192,8 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
     # Default value for CROSS_COMPILE is not to prefix executables
     # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
     export KBUILD_BUILDHOST := $(SUBARCH)
    -ARCH           ?= $(SUBARCH)
    -CROSS_COMPILE  ?= $(CONFIG_CROSS_COMPILE:"%"=%)
    +ARCH           ?= arm
    +CROSS_COMPILE  ?= arm-linux-
    
     # Architecture as present in compile.h
     UTS_MACHINE    := $(ARCH)

    編譯:

    make s3c2410_defconfig
    make uImage -j4

    哎呀,竟然報了下面這個錯誤:

    應該是高版本的make導致這個錯誤出現的,按照錯誤的log修改文件。

    修改如下:

    diff --git a/kernel/timeconst.pl b/kernel/timeconst.pl
    index eb51d76e..04612394 100644
    --- a/kernel/timeconst.pl
    +++ b/kernel/timeconst.pl
    @@ -370,7 +370,7 @@ if ($hz eq '--can') {
            }
    
            @val = @{$canned_values{$hz}};
    -       if (!defined(@val)) {
    +       if (!@val) {
                    @val = compute_values($hz);
            }
            output($hz, @val);

    生成對應的uImage :

    上述編譯出來的內核燒錄到板子加載內核卻出現亂碼,出現亂碼,有可能是我們的機器ID沒有設置好,導致調用的初始化錯誤導致的。:

    二 、內核的啟動

    uboot啟動內核主要的操作如下,從nandflash里把內核讀入內存,設置TAG參數(內存的起始地址大小,命令行參數等等),R1存放機器ID,R2存放參數的存放地址,內核在啟動的時候會解析TAG參數,根據uboot傳遞過來的機器ID,判斷是否能夠支持該機器,從而調用對應板子的初始化函數.

    uboot設置機器ID的代碼主要流程如下:

    Smdk2410.c (board\samsung\smdk2440) board_init    gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;    //設置機器ID的默認值
    Bootm.c (arch\arm\lib)
    boot_jump_linux
      unsigned long machid = gd->bd->bi_arch_number;
      s = getenv("machid");         //可根據環境變量設置機器ID

    我在cmdline隨便設置一個machid,看看內核支持那些板子

    set machid 33333

    啟動過程打印的log,根據log可以看出有匹配對應的開發板子的一個過程,最后由于匹配失敗,卡在這里。

    OK
    Using machid 0x33333 from environment
    
    Starting kernel ...
    
    Uncompressing Linux... done, booting the kernel.
    
    Error: unrecognized/unsupported machine ID (r1 = 0x00033333).
    
    Available machine support:
    
    ID (hex)        NAME
    00000400        AML_M5900
    0000014b        Simtec-BAST
    0000015b        IPAQ-H1940
    0000039f        Acer-N35
    00000290        Acer-N30
    000002a8        Nex Vision - Otom 1.1
    00000454        QT2410
    000000c1        SMDK2410
    000005b4        TCT_HAMMER
    000001db        Thorcom-VR1000
    000005d2        JIVE
    000003fe        SMDK2413
    000003f1        SMDK2412
    00000377        S3C2413
    00000474        VSTMS
    00000695        SMDK2416
    000002de        Simtec-Anubis
    00000707        AT2440EVB
    000007cf        MINI2440
    000002a9        NexVision - Nexcoder 2440
    0000034a        Simtec-OSIRIS
    00000250        IPAQ-RX3715
    0000016a        SMDK2440
    00000518        GTA02
    000003b8        HP iPAQ RX1950
    0000043c        SMDK2443

    2.1 支持mini2440開發板的machid 7cf

    設置cmdline波特率為115200

    set bootargs console=ttySAC0,115200 root=/dev/mtdblock3
    
     nfs 32000000 192.168.1.100:/work/nfs_root/uImage   //燒錄內核命令

    設置machid為mini2440的開發板7cf,啟動,串口不會有亂碼.

    2.2支持smdk2440開發板的machid 16a

    設置machid為smdk2440開發板16a,串口卻出現亂碼:

    我們來看看內核smd2440開發板初始化代碼,是不是跟jz2440有差異:

    Mach-smdk2440.c (arch\arm\mach-s3c24xx)      
    MACHINE_START(S3C2440, "SMDK2440")
         /* Maintainer: Ben Dooks <ben-linux@fluff.org> */    
         .atag_offset	= 0x100,
         .init_irq	= s3c24xx_init_irq,     
         .map_io		= smdk2440_map_io,   //這個函數的初始化化有點問題,    
         .init_machine	= smdk2440_machine_init,     
          .timer		= &s3c24xx_timer,    
           .restart	= s3c244x_restart,     
    MACHINE_END
     
    static void __init smdk2440_map_io(void)
     {
           s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));	
    				s3c24xx_init_clocks(16934400);  //jz2440開發板是12M的晶振,使用使用smdk2440的machid,這里要修改為12000000	
    				s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
    }

    代碼修改如下,支持smdk2440開發板,串口輸出不會有亂碼:

    zhuang@zhuang:~/project/3-jz2440/systems/linux-3.4.2$ git diff .
    diff --git a/arch/arm/mach-s3c24xx/mach-smdk2440.c b/arch/arm/mach-s3c24xx/mach-smdk2440.c
    index 83a1036d..b92c2bd5 100644
    --- a/arch/arm/mach-s3c24xx/mach-smdk2440.c
    +++ b/arch/arm/mach-s3c24xx/mach-smdk2440.c
    @@ -162,7 +162,7 @@ static struct platform_device *smdk2440_devices[] __initdata = {
     static void __init smdk2440_map_io(void)
     {
            s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
    -       s3c24xx_init_clocks(16934400);
    +       s3c24xx_init_clocks(12000000);   //jz2440開發板是12M的晶振,使用使用smdk2440的machid,這里要修改為12000000
            s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
     }

    設置為smdk2440開發板的machid 16a,啟動系統串口沒有輸出亂碼見下圖:

    三、修改內核分區

    內核將nandflash分區劃分如下:

    0x00000000-0x00040000 : "bootloader"
    0x00040000-0x00060000 : "params"
    0x00060000-0x00260000 : "kernel"
    0x00260000-0x10000000 : "root"

    代碼修改如下:

    diff --git a/arch/arm/mach-s3c24xx/common-smdk.c b/arch/arm/mach-s3c24xx/common-smdk.c
    index 084604be..f7dce9b9 100644
    --- a/arch/arm/mach-s3c24xx/common-smdk.c
    +++ b/arch/arm/mach-s3c24xx/common-smdk.c
    @@ -110,43 +110,23 @@ static struct platform_device smdk_led7 = {
    
     static struct mtd_partition smdk_default_nand_part[] = {
            [0] = {
    -               .name   = "Boot Agent",
    -               .size   = SZ_16K,
    +               .name   = "bootloader",
    +               .size   = SZ_256K,
                    .offset = 0,
            },
            [1] = {
    -               .name   = "S3C2410 flash partition 1",
    -               .offset = 0,
    -               .size   = SZ_2M,
    +               .name   = "params",
    +               .offset = MTDPART_OFS_APPEND,
    +               .size   = SZ_128K,
            },
            [2] = {
    -               .name   = "S3C2410 flash partition 2",
    -               .offset = SZ_4M,
    -               .size   = SZ_4M,
    -       },
    -       [3] = {
    -               .name   = "S3C2410 flash partition 3",
    -               .offset = SZ_8M,
    +               .name   = "kernel",
    +               .offset = MTDPART_OFS_APPEND,
                    .size   = SZ_2M,
            },
    -       [4] = {
    -               .name   = "S3C2410 flash partition 4",
    -               .offset = SZ_1M * 10,
    -               .size   = SZ_4M,
    -       },
    -       [5] = {
    -               .name   = "S3C2410 flash partition 5",
    -               .offset = SZ_1M * 14,
    -               .size   = SZ_1M * 10,
    -       },
    -       [6] = {
    -               .name   = "S3C2410 flash partition 6",
    -               .offset = SZ_1M * 24,
    -               .size   = SZ_1M * 24,
    -       },
    -       [7] = {
    -               .name   = "S3C2410 flash partition 7",
    -               .offset = SZ_1M * 48,
    +       [3] = {
    +               .name   = "rootfs",
    +               .offset = MTDPART_OFS_APPEND,
                    .size   = MTDPART_SIZ_FULL,
            }
     };
    zhuang@zhuang:~/project/3-jz2440/systems/linux-3.4.2$

    內核啟動將會把nandflash劃分為上述四個分區

    四、制作新的文件系統

    3.1編譯busybox1.20.0

    解壓busybox

    tar -xvf busybox-1.20.0.tar.bz2

    設置交叉工具鏈make menuconfig

    編譯:make

    安裝:make install CONFIG_PREFIX=/work/nfs_root/fs_mini_mdev_new

    從交叉工具鏈安裝glibc

     cd /work/nfs_root/fs_mini_mdev_new
     mkdir lib usr/lib
     cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so* lib/ -d
     cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*so* usr/lib/ -d

    創建etc目錄

    mkdir etc

    在etc目錄下創建inittab文件

    vim inittab    //內容從2-6行
    # /etc/inittab
    ::sysinit:/etc/init.d/rcS
    console::askfirst:-/bin/sh
    ::ctrlaltdel:/sbin/reboot
    ::shutdown:/bin/umount -a -r

    在etc目錄下穿件init.d/rcS文件

    mkdir init.d
    vim init.d/rcS   chmod a+x init.d/rcS   //設置為可執行文件
    rcS文件內容如下:
    #!/bin/sh
    
    mount -a
    mkdir /dev/pts
    mount -t devpts devpts /dev/pts
    echo /sbin/mdev > /proc/sys/kernel/hotplug
    mdev -s

    在etc目錄下創建fstab文件:內容如下:

    # device     mount-point    type   options        dump  fsck order
    proc           /proc        proc   defaults        0     0
     tmpfs          /tmp         tmpfs  defaults        0     0
     sysfs          /sys         sysfs  defaults        0     0
     tmpfs          /dev         tmpfs  defaults        0     0

    創建dev目錄:

    mkdir dev
    sudo mknod console c 5 1
    sudo mknod null c 1 3

    創建其他目錄

    mkdir proc tmp mnt sys root

    編譯制作jffs2映像文件的工具

     tar -xvf mtd-utils-05.07.23.tar.bz2
     cd mtd-utils-05.07.23/util
     make 
     sudo make install
    //根據需要有可能要先編譯zlib庫

    將fs_mini_mdev_new目錄制作成文件系統鏡像命令:

    mkfs.jffs2 -n -s 2048 -e 128KiB -d fs_mini_mdev_new -o fs_mini_mdev_new.jffs2

    在uboot中將文件系統和內核燒錄進系統命令

    nfs 30000000 192.168.1.100:/work/nfs_root/fs_mini_mdev_new.jffs2
    nand erase.part rootfs
    nand write.jffs2 30000000 260000 $filesize
    set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2
    //燒錄內核
    nfs 32000000 192.168.1.100:/work/nfs_root/uImage7 bootm 32000000

    啟動系統,卻報了如下的錯誤,這是由于我們的交叉工具鏈接在編譯的時候是使用eabi接口的,內核也要使用這種接口才行

    進入內核make menuconfig,加上EABI接口

    重新燒錄系統,成功進入系統沒有問題。


    五、移植yaffs文件系統

    下載yaffs文件系統的鏈接:https://yaffs.net/get-yaffs

    或者使用git下載命令:

    git clone git://www.aleph1.co.uk/yaffs2

    將yaffs文件系統源碼安裝到內核:

    ./patch-ker.sh c m /home/zhuang/project/3-jz2440/systems/linux-3.4.2 

    make menuconfig選中yaffs文件系統

    編譯卻報了如下的錯誤:

    查看內核struct mtd_info的定義,并沒有sync成員而是_sync,把報錯的地方都加上_即可。

    將文件系統制作成yaffs2文件系統鏡像

     mkyaffs2image fs_mini_mdev_new fs_mini_mdev_new.yaffs2

    燒錄啟動:

    nfs 30000000 192.168.1.100:/work/nfs_root/fs_mini_mdev_new.yaffs2
    nand erase.part rootfs
    nand write.yaffs 30000000 260000 $filesize


    覺得不錯,就給我點小支持吧,蟹蟹

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有