• 残留的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();

  • 相关阅读:
    PDF数据提取------2.相关类介绍
    Google搜索的常用技巧
    a helper class for generating xls or csv file
    正则 提取html标签value
    获取 windows地址栏 网页地址栏 文件名
    MSSQL将逗号分隔的字符串转换成列显示
    C# String.Format字符串中包含"{" "}"时需注意的问题
    格式化JSON中时间
    Oracle 10G创建表空间
    Sqlserver取最近一分组中最新一条记录
  • 原文地址:https://www.cnblogs.com/nxz-diy/p/5071006.html
Copyright © 2020-2023  润新知