tiny6410裸机实验第0章--------------开发环境的搭建(代码阅读和编写工具 source insight )

【说明】

              Source Insight 是一款优秀的代码阅读及编写工具,我们用它来阅读linux内核及U-boot源代码,同时我们配合前面的NFS服务器用其进行主要代码的编写。大家可以从网络上很方便下载到这款软件,破解版也有的。


【初次使用】

             默认情况下,source insight不支持汇编文件,我们如果进行如下配置,才能将汇编文件加入到工程之中。

             Options --> Doucument Options --> 在file filter 里面加", *.S"

              


【新建工程】

              project --> new project -->输入相应的名字和工程数据存储位置(不是源文件位置)--> 然后选择源文件的文职点OK

              然后在弹出的对话框中,选择需要加入工程的源文件(一般只加入和你开发板对应的源文件,也可以全部加入)

              


【同步工程信息】

              source insight需要对工程中的源文件关系进行同步,我们需要手动执行,如下。

              project -- >Synchronize Files-->勾上 Force all files to be re-parsed --> OK


【代码阅读】

              我们打开刚才建立的工程,比如我打开我的linux内核源代码工程

              左边一栏是当前打开的文件中的函数,变量等的列表,中间是源代码,右边是该工程中所有的文件,下面是鼠标点击的函数或者源代码的详细信息,比如函数的实现

              



【风格配置】

              大家或许看到我的代码颜色和你的不一样。其实我用了配置文件,只要下载SOURCE INSIGHT配置文件(上网搜一大堆) 让后放在   我的文档\Source Insight\Settings重新启动source insight 就可以了



【代码编写】

              我们现在来试试在今后的开发中,我们如何利用source insight 进行代码的编写

              1】首先要挂载上NFS服务器,怎么挂载?看前一篇文章介绍!

              2】在WIN7 下,在挂载盘里边你喜欢的位置创建一个C语言源文件

              3】你从linux虚拟机上会发现这个目录下确实创建了一个C源文件

              4】将源文件拖入SOURCE Insight 进行编写,比如我们直接写一个hello world,保存

              

              

             5】在虚拟机的终端编译这个源文件

                  

             6】运行后,看到输出hello world  ,所以,我们在win7上对文件的改动直接对linux下文件系统有效。

【常用快捷键】             

退出程序                                : Alt+F4
重画屏幕                                : Ctrl+Alt+Space
完成语法                                : Ctrl+E
复制一行                                : Ctrl+K
恰好复制该位置右边的该行的字符          : Ctrl+Shift+K

复制到剪贴板                          : Ctrl+Del
剪切一行                                : Ctrl+U
剪切该位置右边的该行的字符              : Ctrl+;
剪切到剪贴板                          : Ctrl+Shift+X
剪切一个字                              : Ctrl+,

左边缩进                                : F9
右边缩进                                : F10
插入一行           : Ctrl+I
插入新行                                : Ctrl+Enter
加入一行                                : Ctrl+J

从剪切板粘贴                          : Ctrl+Ins
粘贴一行                                : Ctrl+P
重复上一个动作                       : Ctrl+Y
重新编号                                : Ctrl+R

重复输入                                : Ctrl+\
替换                                    : Ctrl+H
智能重命名                              : Ctrl+''
关闭文件                                : Ctrl+W
关闭所有文件                          : Ctrl+Shift+W
新建        :Ctrl+N
转到下一个文件                      : Ctrl+Shift+N
打开                                : Ctrl+O

重新装载文件                        : Ctrl+Shift+O
另存为                              : Ctrl+Shift+S
显示文件状态                        : Shift+F10
激活语法窗口                        : Alt+L
回到该行的开始                      : Home
回到选择的开始                      : Ctrl+Alt+[
到块的下面                             : Ctrl+Shift+]
到块的上面                             : Ctrl+Shift+[

书签                                   : Ctrl+M
到选择部分的尾部                       : Ctrl+Alt+]
到下一个函数                           :小键盘 +
上一个函数                              :小键盘 -
后退                                    : Alt+,, Thumb 1 Click
后退到索引                              : Alt+M
向前                                    : Alt+., Thumb 2 Click

转到行                                  : F5, Ctrl+G
转到下一个修改                          : Alt+(KeyPad) +
转到下一个链接                          : Shift+F9,
回到前一个修改                          : Alt+(KeyPad) -
跳到连接(就是语法串口列表的地方)        : Ctrl+L
跳到匹配                                : Alt+]

选择一行                                : Shift+F6
选择句子(直到遇到一个 . 为止)           : Shift+F7, Ctrl+.
从当前位置选择到文件结束                : Ctrl+Shift+End
从当前位置选择到行结束                  : Shift+End
从当前位置选择到行的开始                : Shift+Home
从当前位置选择到文件顶部                : Ctrl+Shift+Home

选择一个单词                            : Shift+F5
选择左边单词                            : Ctrl+Shift+Left
选择右边单词    : Ctrl+Shift+Right
排列语法窗口(有三种排列方式分别按1,2,3次)           : Alt+F7

移除文件                                : Alt+Shift+R
同步文件                                : Alt+Shift+S
增量搜索(当用Ctrl + F 搜索,然后按F12就会转到下一个匹配)         : F12
替换文件                                : Ctrl+Shift+H

向后搜索                                : F3
在多个文件中搜索                        : Ctrl+Shift+F
向前搜索                                : F4
搜索选择的(比如选择了一个单词,shift+F4将搜索下一个)       : Shift+F4


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先需要下载tiny-imagenet数据集,并解压缩到指定目录。可以从官网下载:http://cs231n.stanford.edu/tiny-imagenet-200.zip 接下来,我们使用PyTorch框架进行训练和分类预测。 训练代码: ```python import torch import torch.nn as nn import torch.optim as optim import torchvision.models as models import torchvision.transforms as transforms import torchvision.datasets as datasets # 定义数据预处理 train_transform = transforms.Compose([ transforms.RandomHorizontalFlip(), transforms.RandomCrop(64, padding=4), transforms.ToTensor(), transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225)) ]) val_transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225)) ]) # 加载数据集 train_dataset = datasets.ImageFolder('tiny-imagenet-200/train', train_transform) val_dataset = datasets.ImageFolder('tiny-imagenet-200/val', val_transform) # 定义数据加载器 train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=128, shuffle=True, num_workers=4) val_loader = torch.utils.data.DataLoader(val_dataset, batch_size=128, shuffle=False, num_workers=4) # 定义模型 model = models.resnet18(pretrained=True) num_features = model.fc.in_features model.fc = nn.Linear(num_features, 200) # 定义损失函数和优化器 criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=0.1, momentum=0.9, weight_decay=0.0001) # 训练模型 device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') model.to(device) for epoch in range(10): model.train() for i, (inputs, targets) in enumerate(train_loader): inputs, targets = inputs.to(device), targets.to(device) optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, targets) loss.backward() optimizer.step() print('Epoch [%d/%d], Iter [%d/%d], Loss: %.4f' % (epoch+1, 10, i+1, len(train_loader), loss.item())) model.eval() correct = 0 total = 0 with torch.no_grad(): for inputs, targets in val_loader: inputs, targets = inputs.to(device), targets.to(device) outputs = model(inputs) _, predicted = torch.max(outputs.data, 1) total += targets.size(0) correct += (predicted == targets).sum().item() print('Epoch [%d/%d], Validation Accuracy: %.4f' % (epoch+1, 10, correct/total)) # 保存模型 torch.save(model.state_dict(), 'tiny-imagenet-200-resnet18.pth') ``` 分类预测代码: ```python import torch import torchvision.transforms as transforms import torchvision.datasets as datasets import torchvision.models as models # 定义数据预处理 transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225)) ]) # 加载测试数据集 test_dataset = datasets.ImageFolder('tiny-imagenet-200/test', transform) # 定义数据加载器 test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=128, shuffle=False, num_workers=4) # 加载模型 model = models.resnet18(pretrained=False) num_features = model.fc.in_features model.fc = nn.Linear(num_features, 200) model.load_state_dict(torch.load('tiny-imagenet-200-resnet18.pth')) # 预测 device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') model.to(device) model.eval() with torch.no_grad(): for inputs, _ in test_loader: inputs = inputs.to(device) outputs = model(inputs) _, predicted = torch.max(outputs.data, 1) print(predicted) ``` 注意:由于tiny-imagenet数据集较大,训练过程可能需要较长时间。建议使用GPU加速训练过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值