PA0

写在前面的话

如果您对该系列感兴趣的话,推荐您先看一下南京大学的计算机组成原理实验(也就是PA)的讲义,然后再来看这篇文章可能有更多地收获。如果您是要完成该作业的学生,我推荐你先看讲义,或者好好听老师的讲课,然后自己独立完成这个作业,但是如果你没有听懂,或者你无论如何也无法理解讲义上面的字,又或者说对讲义上面的某点知识某个问题不了解而又觉得太简单不好意思问老师,那么您可能会从这篇文章里面获得一些你需要的信息。本篇文章将会包括笔者自己做PA的所有经过,希望你并不将该文章当成抄袭的根源,而是成为你思考的源泉。

PA系列传送门

PA0:https://blog.youkuaiyun.com/qq_41983842/article/details/88921427
PA1.1:https://blog.youkuaiyun.com/qq_41983842/article/details/88934779
PA1.2:https://blog.youkuaiyun.com/qq_41983842/article/details/89714479
PA1.3:https://blog.youkuaiyun.com/qq_41983842/article/details/89714689
PA2.1:https://blog.youkuaiyun.com/qq_41983842/article/details/95232055
PA2.2&2.3:https://blog.youkuaiyun.com/qq_41983842/article/details/101164495
PA3.1:https://blog.youkuaiyun.com/qq_41983842/article/details/103094859
PA3.2:https://blog.youkuaiyun.com/qq_41983842/article/details/103843093
PA4:https://blog.youkuaiyun.com/qq_41983842/article/details/104667951

思考题

  1. Linux and Linux?
    不同Linux系统之间有什么区别?可能你现在说不出来任何区别,因为你可能仅仅接触了Debian这一个东西,而在PA0的实验里面并没有怎么了解他,只是执行了一些简单的命令,希望你百度这个问题并总结来获得答案,日后你在使用多种Linux系统的时候可能会有更深的体验。

  2. Can’t memory be larger?

    内存大小不可以尽可能大,因为32位系统可以支配32根地址线,其内存寻址能力是2^32,也就是他内存寻址能力的极限就是4Gb。

  3. Why Windows is quite ‘fat’?

    Windows有很多东西是一次性下好,但是debian默认安装的东西比Windows要少很多,很多东西都要之后自己去装。而且Windows有图形界面,占很大空间。

  4. 为什么关机需要超级用户权限?

    防止发生意外,比如说关机的时候别的用户有文档没有保存,这时候直接关机就会导致别的用户丢失文档,但是如果是root用户,整个机器都一个人控制,所以就可以关机。

  5. make期间一堆信息输出到屏幕的时候会发生什么?

    请自己好好思考一下这个问题,提示:(编译)

  6. 如何做一个模拟的计算机运行helloworld?

    这个问题贯穿整个PA,大概说下自己的感想,什么都可以,等到做完整个PA之后你就会有更深的体验。

实验内容

安装debian双系统

我准备在mac上面安装debian双系统,而不是装虚拟机,首先下载debian映像并且制作启动u盘
开始安装第一步啊大大大啊大大大
输入用户名
在这里插入图片描述
设置密码
在这里插入图片描述
从mac的128g存储空间里面分出来30g
在这里插入图片描述
留出来6g的交换空间
在这里插入图片描述
选择安装的软件(记得勾上GNOME
在这里插入图片描述
安装成功

至此双系统安装完成。

进入Linux的第一步

进行poweroff命令
在这里插入图片描述

安装必要的工具

换成国内163的源
当你无法进行sudo或者apt-get update之后发现并不能解决你的问题的时候,就是你换源的时候了,推荐阿里源、163源等等,换源之后你会发现爽的一批。具体换源步骤百度。
在这里插入图片描述
apt-get update并且安装sudo
在这里插入图片描述
在这里插入图片描述
安装vim
在这里插入图片描述
vim test
在这里插入图片描述

安装更多的工具

尝试连接网络(因为我是安装的双系统,由于debian不支持mac的网卡,所以我选购了rt2800架构的网卡插在电脑上来使用无线网络,所以我能够直接连接上网络而不需要配置,装虚拟机的同学们请按照讲义一步一步来)
在这里插入图片描述
接下来安装了更多的工具,由于数量众多,所以没有一一截图,一般来讲只要你换了一个好一点的源,这些都是对着讲义输入指令就完全OK的事情。

更多的发现

进入vimrc并且进行调试,按照我的习惯设置的vim
在这里插入图片描述
helloworld程序
在这里插入图片描述
对他进行调试,设置断点
在这里插入图片描述
使用make指令
在这里插入图片描述
校准时间
在这里插入图片描述

用SSH连接虚拟机

这部分我没有做相应的实验,双系统直接从终端打开,用虚拟机的小伙伴一定要认真对着讲义做这块,后期好多的问题都容易发生在这个地方。

提交pa实验的代码

使用git工具
在这里插入图片描述
添加环境变量
在这里插入图片描述
更换STU_ID
在这里插入图片描述
切换到pa0分支
在这里插入图片描述使用git log查看更改
在这里插入图片描述
使用make命令进行编译
在这里插入图片描述
上传到coding.net代码仓库
在这里插入图片描述
在这里插入图片描述
上传成功!
在这里插入图片描述

遇到的问题及解决办法

写出你所遇到的比较让人头疼的问题

实验心得

PA0已经到此结束,PA0是整个PA系列最简单也是最基础的一步,只有把环境配置好,将来写代码才不会出现奇奇怪怪的问题,不知你有何体验?

### STM32 PA0 WKUP Pin Configuration and Usage In the context of configuring and using the STM32's PA0 WKUP (Wake-Up) pin, several aspects need to be considered including initialization settings, interrupt handling, and specific function configurations. The Wake-Up functionality on GPIO pins allows a device to wake up from low-power modes such as Standby or Stop mode. For PA0 configured as a wakeup line: - The first step involves setting up system priority grouping with `NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4)` which configures how priorities are split between preemption and subpriorities[^3]. To configure PA0 specifically for use as an external interrupt/WKUP signal: ```c // Enable clock access to SYSCFG and EXTI peripherals. RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0); // Configure EXTI Line 0 Interrupt Request EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; // Choose appropriate trigger condition EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); // Assign handler to IRQ channel corresponding to EXTI Line 0 NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); ``` For managing events related to this pin like output commands or event outputs, functions similar to those described under `GPIO_EventOutputConfig` can also play roles depending upon application needs but these do not directly apply when simply wanting to set up a basic wake-up feature[^2]. When working within HAL libraries provided by STMicroelectronics, much of what has been outlined above may already have higher-level abstractions available that simplify setup further through predefined macros and helper routines mentioned in exti.c files associated with GPIO operations[^4]. --related questions-- 1. How does one change the triggering edge sensitivity for EXTI lines? 2. What is the role of SYSCFG peripheral concerning external interrupts? 3. Can multiple GPIOs serve as WKUP sources simultaneously? If yes, how should they be managed? 4. In detail, explain the difference between different NVIC priority groups used during interrupt configuration. 5. Are there any special considerations while waking up from standby versus stop mode using PA0 WKUP?
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值