zoukankan      html  css  js  c++  java
  • 残留的linux相关笔记

    1. 设置网络环境
    1) 设置宿主机网络环境
    #ifconfig eth1 192.168.16.111

    2) 设置开发板网络环境
    >pri
    >setenv ipaddr 192.168.16.233
    >setenv serverip 192.168.16.111
    >setenv gatewayip 192.168.16.1
    >ping 192.168.16.111
    >saveenv

    2. 通过TFTP下载文件
    >tftp 0x40000000 aaa.txt

    3. 通过tftp烧写自己的u-boot
    1) 下载文件到开发板
    #cp u-boot.bin /tftpboot/    将编译好的u-boot放在宿主机tftp服务器目录
    >tftp 0x40000000 u-boot.bin    下载u-boot到目标机

    2) 用u-boot命令烧写Flash(先擦、再写)
    >nand erase 0x0 0x60000            擦除flash,从0地址擦0x60000大小
    >nand write 0x40000000 0x0 0x60000    将内存0x40000000地址处的文件写到Flash的0x0地址,写0x60000大小。    

    4. 加载内核
    1) 生产uImage
    arch/arm/boot/zImage 内核原版
    制作u-boot引导的内核 uImage, u-boot/mkimage -> zImage -> uImage
    #拷贝已编译过的u-boot/tools/mkimage 到/usr/bin
    #在内核源码目录下执行make uImage

    2) 安装内核
    #cp arch/arm/boot/uImage /tftpboot
    TFTP  下载内核映像  uImage  到  DRAM 1  的起始地址  0x40000000:   
    >tftp 0x40000000 uImage
    启动内核
    >bootm


    3) 固化内核
    >tftp 0x40000000 uImage
    >nand erase 0x600000 0x500000
    >nand write 0x40000000 0x600000 0x500000

    u-boot启动参数
    >setenv bootcmd 'nand read 0x40000000 0x600000 0x500000; bootm 0x40000000'

    5. 挂载文件系统
    1) 搭建NFS服务器,参见《开发环境搭建 2.3节》

    2) 重启NFS服务器
    service portmap restart
    /etc/init.d/nfs-kernel-server restart

    6. 配置开发板启动参数
    1) 设置u-boot启动命令
    >setenv bootcmd tftp 40000000 uImage; bootm;

    2) 设置内核启动参数,以NFS方式远程挂载宿主机上的根文件系统
    >setenv  bootargs  'console=ttySAC0,115200  root=/dev/nfs  rw  nfsroot=192.168.1.130:/nfs/mini_rootfs ip=192.168.16.200:192.168.1.130:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc'

    -----------------------------------------

    设置内核io的接口:

    设置GPIO的方向,如果是输出同时设置电平:
        gpio_direction_input(S5PV210_GPJ2(0));
        gpio_direction_output(S5PV210_GPJ2(0), 0);

    获取输入引脚的电平:
        gpio_set_value(S5PV210_GPJ2(0), data);
        gpio_get_value(S5PV210_GPJ2(0));
        
    二 内核中gpio的使用
         1 测试gpio端口是否合法 int gpio_is_valid(int number);

         2 申请某个gpio端口当然在申请之前需要显示的配置该gpio端口的pinmux
            int gpio_request(unsigned gpio, const char *label)

         3 标记gpio的使用方向包括输入还是输出
           /*成功返回零失败返回负的错误值*/
           int gpio_direction_input(unsigned gpio);
           int gpio_direction_output(unsigned gpio, int value);

         4 获得gpio引脚的值和设置gpio引脚的值(对于输出)
            int gpio_get_value(unsigned gpio);
            void gpio_set_value(unsigned gpio, int value);

         5 gpio当作中断口使用
            int gpio_to_irq(unsigned gpio);
            返回的值即中断编号可以传给request_irq()和free_irq()
            内核通过调用该函数将gpio端口转换为中断,在用户空间也有类似方法

         6 导出gpio端口到用户空间
            int gpio_export(unsigned gpio, bool direction_may_change);
            内核可以对已经被gpio_request()申请的gpio端口的导出进行明确的管理,
            参数direction_may_change表示用户程序是否允许修改gpio的方向,假如可以
            则参数direction_may_change为真
            /* 撤销GPIO的导出 */
            void gpio_unexport();

  • 相关阅读:
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 120. Triangle
    Leetcode 26. Remove Duplicates from Sorted Array
    Leetcode 767. Reorganize String
    Leetcode 6. ZigZag Conversion
    KMP HDU 1686 Oulipo
    多重背包 HDU 2844 Coins
    Line belt 三分嵌套
    三分板子 zoj 3203
    二分板子 poj 3122 pie
  • 原文地址:https://www.cnblogs.com/nxz-diy/p/5071006.html
Copyright © 2011-2022 走看看