I was logging into google voice again, and found myself in a familiar world. I send a text message, and when the person replies it's in my inbox AND my phone. The problem is, I have one of those crappy phones so I have to constantly be deleting messages because I run up to the limit.
Here's my thoughts, if you get a text message in Google Voice AND you're logged in, it gives the text message say 1 minute to sit in the inbox doing nothing, if you immediately respond INSIDE google voice, it doesn't bother sending it to your phone, additionally you could add a "send to phone" option for a text, then it will still send it to your phone in the event you're getting directions and you won't have internet access when you leave your computer.
Well there you are just one more idea.
Wednesday, December 2, 2009
Thursday, November 26, 2009
Troubleshooting
One of the biggest challenges in ECE 344 is troubleshooting on the system.
I mean walking through typing stp, then rrd when you want to read the registers.
In comes typical troubleshooting without a debugger, normally you stick some print statements in there and wait for the print fest to begin.
This bothered me because we can't really do this in our architecture very easy. The nice thing is that we learned about sub routines, and you can treat sub routines as functions if you do it right, so what did I do?
I wrote a sub routine that will print the register values at the time you branch and link, the main limitation, is that interrupts can change your register values once you've entered into the subroutine. This is where the mailbox architecture comes in, if you design your system so that the interrupts do as little as possible and leave everything as untouched as possible, you can then go into your print subroutine and it will print the register's last value.
There are probably plenty of other uses you can find for this routine, and maybe even better ways to use it, for example when you enter this subroutine it waits for a key press before you can exit. Once that happens you can return from your branch and link, this is great because now you don't just blow through your whole program before even really seeing anything.
This is untested code as I am unable to make it to the school until Monday at the earliest, but if you want to give it a try I'll link to it at the bottom.
Changes you'll want to make to allow this to integrate with your program is finding your location in memory you can stick the long ascii string I've built.
Additionally you'll need a 32 bit to ascii converting branch and link, which i haven't written, but we have written for our latest program. This will convert the actual register values to a printable value, as well as you'll need a push and pop routine at the beginning and end, with the pointer jumping by 40 each time, if you don't have this you'll have to find a way to get the data from the register's instead of memory as I'm doing.
As I have time I'll upload more files and a more complete solution but this is very far along and should only require small amounts of modification.
Check out the code here: Print Function
I mean walking through typing stp, then rrd when you want to read the registers.
In comes typical troubleshooting without a debugger, normally you stick some print statements in there and wait for the print fest to begin.
This bothered me because we can't really do this in our architecture very easy. The nice thing is that we learned about sub routines, and you can treat sub routines as functions if you do it right, so what did I do?
I wrote a sub routine that will print the register values at the time you branch and link, the main limitation, is that interrupts can change your register values once you've entered into the subroutine. This is where the mailbox architecture comes in, if you design your system so that the interrupts do as little as possible and leave everything as untouched as possible, you can then go into your print subroutine and it will print the register's last value.
There are probably plenty of other uses you can find for this routine, and maybe even better ways to use it, for example when you enter this subroutine it waits for a key press before you can exit. Once that happens you can return from your branch and link, this is great because now you don't just blow through your whole program before even really seeing anything.
This is untested code as I am unable to make it to the school until Monday at the earliest, but if you want to give it a try I'll link to it at the bottom.
Changes you'll want to make to allow this to integrate with your program is finding your location in memory you can stick the long ascii string I've built.
Additionally you'll need a 32 bit to ascii converting branch and link, which i haven't written, but we have written for our latest program. This will convert the actual register values to a printable value, as well as you'll need a push and pop routine at the beginning and end, with the pointer jumping by 40 each time, if you don't have this you'll have to find a way to get the data from the register's instead of memory as I'm doing.
As I have time I'll upload more files and a more complete solution but this is very far along and should only require small amounts of modification.
NOTE: As with any file you download from google documents, unfortunately just directly downloading it will have format issues. Copy and paste the contents to a new file and save as a .s file, otherwise you'll be chasing your tail trying to find problems that really don't exist.
Check out the code here: Print Function
Friday, November 20, 2009
Thoughts on OS's
So here are my thoughts on os's these days.
I just recently got my new HP netbook. It's a great little device, but here's my worry, it's not very powerful and it's running windows, My old laptop is running windows as well and is slowing to a crawl.
What are some common causes of slowed down computers?
From Computer Hope:
It would appear there are two common causes here.
1. The hardware capability is declining.
2. Operating System related errors.
Hold up before you start getting all upset and claiming that if the people who wrote the programs cleaned them up right then you wouldn't have these problems.
What I want to know is why these programs are becoming so integrated with the OS that the OS can't simply clean itself up?
I was watching the Google OS talk as well as reading a little on it. One of the things I noticed and it's becoming a bit of a theme across OS developer's now a day's.
Let's build OS's that are designed for specific hardware and really only market for that.
What I'd really rather see is OS's that when you load them up will look at all hardware connected and self configures itself to be the most optimal OS for that hardware. What this means is now instead of having 300 print drivers loaded into your system and 45 wireless network card configurations, the OS looks at what you have and decides what's best and get's rid of the rest. Typically true hardware to the system should have only those drivers loaded, no more, no less.
I know this sounds crazy and in some ways it is, but what happens next is the OS is also linked up with the web, so let's say you plug in a new hardware item a new sound card, a new stick of ram or something. Things might be a little hokey but with a basic set of drivers that will control (in a limited way) most hardware, you now tell the computer to rescan for system updates, at which point you can optionally load the new driver's for this new device onto your system, and again it re-configures itself to run as optimally as it can with this system.
What can this mean for boot up times? Well if the OS doesn't have to constantly be verifying what equipment you have and assume you just plain have it and go forward from there. If/When it runs into a hiccup such as it expected a stick of ram somewhere and didn't see it, it jumps to the degraded mode until you either update and "auto" re-configure the system or repair the problem.
I think if you can resolve hardware checks as well as re-design the bootup to start simultaneously kick off processes that will help considerably.
Once more, you won't have to constantly be pinging the devices (wasting power) just verifying that the components are there.
I just recently got my new HP netbook. It's a great little device, but here's my worry, it's not very powerful and it's running windows, My old laptop is running windows as well and is slowing to a crawl.
What are some common causes of slowed down computers?
From Computer Hope:
Hard disk drive is short on available disk space.
Several software programs have been installed/uninstalled leaving behind bad files and/or confusing the software.
Data Corruption.
Outdated drivers
Computer is overheating.
Corrupt OS.
Bad Hardware.
It would appear there are two common causes here.
1. The hardware capability is declining.
2. Operating System related errors.
Hold up before you start getting all upset and claiming that if the people who wrote the programs cleaned them up right then you wouldn't have these problems.
What I want to know is why these programs are becoming so integrated with the OS that the OS can't simply clean itself up?
I was watching the Google OS talk as well as reading a little on it. One of the things I noticed and it's becoming a bit of a theme across OS developer's now a day's.
Let's build OS's that are designed for specific hardware and really only market for that.
What I'd really rather see is OS's that when you load them up will look at all hardware connected and self configures itself to be the most optimal OS for that hardware. What this means is now instead of having 300 print drivers loaded into your system and 45 wireless network card configurations, the OS looks at what you have and decides what's best and get's rid of the rest. Typically true hardware to the system should have only those drivers loaded, no more, no less.
I know this sounds crazy and in some ways it is, but what happens next is the OS is also linked up with the web, so let's say you plug in a new hardware item a new sound card, a new stick of ram or something. Things might be a little hokey but with a basic set of drivers that will control (in a limited way) most hardware, you now tell the computer to rescan for system updates, at which point you can optionally load the new driver's for this new device onto your system, and again it re-configures itself to run as optimally as it can with this system.
What can this mean for boot up times? Well if the OS doesn't have to constantly be verifying what equipment you have and assume you just plain have it and go forward from there. If/When it runs into a hiccup such as it expected a stick of ram somewhere and didn't see it, it jumps to the degraded mode until you either update and "auto" re-configure the system or repair the problem.
I think if you can resolve hardware checks as well as re-design the bootup to start simultaneously kick off processes that will help considerably.
Once more, you won't have to constantly be pinging the devices (wasting power) just verifying that the components are there.
Subscribe to:
Posts (Atom)