学习笔记(2)

chmod 777 ./ -r
改变当前目录所有的文件读写格式
指令有两条SWP  字数绝交换
SWP RO,RO,[R1];该指令完成将R1所指向的存储器中的字数据与RO中的字数据交换


内核模块在动态加载时候内核模块才会被调用
通过module_init 宏来指定
相当于C程序运行时先到MAIN();

如模块加载函数
module_init(hello_init);
在模块加载时候,会调用hello_init()函数;

makefile中
obj -m 表示一个模块
obj -y 表示编译进内核

make命令
会找目标 如果没有加...则会找第一个目标.

内核模块的编译多使用makefile来编译。


在SAMBA中:! service smb restart
重新启动。

tar xvzf 解压的文件 -C 指定的目录(加了-C)
使用命令:
方法一:跟上权路径;
如/usr/local/arm/arm-linux-gcc
方法二:环境变量。bin目录的命令都可以用
export &PATH
1:  vi /etc/profile
  加上 路径。
在开发板上用的
编译器 arm-linux-gcc   (-g 表示调试)
       arm-linux-gcc hello.c -o hello

反汇编(转成汇编渔阳)工具
       arm-linux-dump -D -S hello >log(输入到log)


ELF 文件查看器
arm-linux-readelf  -d hello

内核中## 表示连接的作用
  hehe(name)   _NR_##name  如果前面hehe(name)中name取read则后面name 也取read


bootloader
一个嵌入式从软件角度来看分为三个层次:
1:引导加载程序
包括固化在固件(firmware)中的boot程序(可选)
和Bootloader两大部分
2:LINUX内核
特定于嵌入式定制的内核
3:文件系统
包括了系统命令和应用程序

 

一个同时装有BOOTLOADER,内核的启动参数、内核映像和根文件系统。
在嵌入式中通常没有像BIOS那样的固件程序,因此整个系统启动任务就由BOOTLOADER完成
1:能初始化硬件,2:为调用操作系统做好准备。

嵌入式系统将固态存储设备比如FLASH安排在上电后开始执行的位置 如2410 在0X00000000
BOOTLOADER 就放在FLASH中最前端上电后就从0X00000000处执行。

BOOTLOADER移植
流程两个阶段:
阶段1:硬件的初始化(CPU内部的寄存器 内存)
      为加载2阶段准备RAM空间
      拷贝BOOTLOADER的stage2到RAM中
      设置好堆栈(原因:以为第二阶段C也需要堆栈,局部变量需要用到堆栈)
      跳转到stage2的C入口点(第二阶段是C语言 第一阶段汇编语言)


 第一阶段运行在FLASH中第二阶段运行在内存中

阶段2:
       硬件(串口网卡等)初始化
       将内核映像和根文件系统从FLASH读到RAM中
       调用内核

Uboot
是Bootloader的一种。
是德国开发的Bootloader的程序,支持MIPS/X86/ARM/XSCALE等

makefile 中的术语:依赖 目标 命令
smdk2410_cofig 为目标。在VI 中查找 /名字

uboot 提供了丰富的命令
help 查看命令
 

环境变量相关
printenv 查看环境变量
setenv 添加修改删除环境变量
如删除file1变量 setenv file1
saveene  保存环境变量 掉电也可以保存

文件下载
tftp  通过网络下载
需要设置好网络步骤
setenv ethaddr 12:34:56:78:9A:bc (网卡MAC地址)
setenv lpaddr 192.168.1.1(开发板的IP地址)
setenv serverip 192.168.1.254 (tftp服务器的地址LINUX服务器的地址)

例子:
tftp 32000000 ulmage
把server (IP   为 serverip)中目录下的ulmage通过tftp读入到0x32000000处


串口下载 loadb
协议kernit

显示内存
md 地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值